2012-01-10 51 views
0

我希望這個問題不要重複。但只是無法在任何地方找到答案:Java:類已解決?

我有一個文件夾包含兩個文件一個A.java另一個B.class。

現在A.java我想申報

public class A extends Applet{ 
... 
    B aB; 
} 

編譯器給我:

B cannot be resolved to a type 

我看了很多帖子說說,如果文件是在同一文件夾中,我不需要導入。任何人都可以幫助我「解決」這個問題嗎? 非常感謝!

-----------已解決! - 查看下面的答案------------------

+0

a.java你有一流的「A」,我想在文件b.class中(在b.java中)類名將是'B',你確定它是小'b'嗎?請檢查!!如果問題未解決,請嘗試發佈B級代碼。 – aProgrammer 2012-01-10 07:36:31

+0

已更改...是的,它們是一致的。我使用A和B作爲兩個示例 - 原始代碼有點複雜......但也許我必須很快發佈它們。 – user1140120 2012-01-10 07:41:37

+0

你能否在類聲明中顯示名稱和包裝的完整文件夾結構? – 2012-01-10 07:54:57

回答

0

你發佈的簡單案例適合我。我會檢查下列事項:

  • 你肯定B.class存在於同一文件夾中A.java
  • 您是否在該文件夾中運行javac
  • 您是否在程序中的任何地方正確鍵入了類名B?這包括大寫,因爲Java標識符區分大小寫。
  • 您的程序中是否有任何package聲明?如果有的話,這些都不會起作用,因爲你只需將所有內容放入一個文件夾就可以隱式使用默認包。
-1

編譯器在其類路徑中查找* .class文件。它只會在相同的源目錄中查找* .java文件。您需要設置類路徑以包含目錄。

或者您可以使用IDE來爲您設置所有這些,並在此過程中節省大量時間。

+0

如果你只是使用默認包,編譯器會在當前目錄中找到'.class'文件。 – Taymon 2012-01-10 08:03:26

1

.class文件需要駐留在classpath變量所引用的目錄中。通常你將你的.java文件放在一個目錄(src)中,編譯到另一個目錄(bin),並在第三個目錄(lib)中包含外部.class文件。該命令將是這樣的:

# compile 
javac -sourcepath src -classpath lib -d bin 
# run 
java -classpath bin:lib A 

使用像eclipse一個IDE應該有很大的幫助這裏,因爲它在文件需要的大部分細節護理

+0

謝謝!它的工作原理,我用「javac -classpath dirForAandB A.java」非常感謝! – user1140120 2012-01-10 08:40:22