2016-09-18 127 views
-1

所以我有兩個java文件(在每個公共類中)保存在同一個文件夾中的同一個包裏面。文件夾層次結構反映了軟件包名稱。現在,在其中一個類中,我想調用另一個類的方法。就我而言,這可以通過撥打:someClass.someMethod();來完成。 當我這樣做時,文件不符合。它產生一條錯誤消息,說它找不到該方法。*我檢查了錯別字,但沒有。我也嘗試通過導入import somePackage.someClass這個類來幫助程序,但沒有任何結果。我能做到這一點的唯一方法是從兩個文件中刪除軟件包,或者將該方法複製到另一個文件中,但從長遠來看,這兩種文件都不可取。在Java中調用另一個類的方法不起作用?

你有什麼想法可能會導致錯誤以及如何解決? 非常感謝!

  • 錯誤看起來是這樣的:

    TestBit.java:7: error: cannot find symbol boolean value = someClass.someMethod(arg1, arg2); ^ symbol: variable someClass location: class otherClass 1 error"

編輯:
以下是代碼:

package uk.ac.prejava.ex1; 
public class PackedLong{ 
     public static boolean get(long packed, int position) { 
      long check = (packed>>>position)& 1; 
      return (check == 1); 
     } 
    } 

package uk.ac.prejava.ex1; 
public class TestBit { 

    public static void main(String[] args) { 
    long currentValue = Long.decode(args[0]); 
    int position = Integer.parseInt(args[1]); 
    boolean value =PackedLong.get(currentValue, position); 
    System.out.println(value); 

}}

我想打電話給PackedLong.get在第二類中,但是當符合javac是無法找到該文件。

+0

你是怎麼定義你的someclass的someMethod的? – SMA

+0

請添加您的代碼,如果沒有它,很難找到解決方案。 –

+0

你必須首先有一個'someClass'的實例。 – QBrute

回答

1

我假設你有以下的封裝結構:

  • somePackage

    • SomeClass的

    • otherClass

這是什麼可能是錯的。在編寫代碼時,您應該位於somePackage上方的目錄中。所以當你看到目錄列表時,你應該只看到一些包裝。現在你將不得不使用以下編譯類:

javac somePackage/otherClass.java 

希望工程。

+0

這是我一直無法做到的事情!我不知道爲什麼,但我似乎能夠遵守代碼,如果我在包目錄內,否則我得到「文件未找到」的錯誤。但是,我只能從包的正上方的目錄運行代碼,如您所描述的那樣。你有什麼想法可能會導致這個問題? – Jhonny

+1

你需要在'somePackage'正上方的文件夾中,並用'/'not'輸入'javac somePackage/otherClass.java'。 – Shadov

+0

@Whatzs哦,我明白了!現在它符合要求!但是,當我運行一個類文件時,我仍然使用'.',不是嗎? – Jhonny

相關問題