2010-06-22 174 views
0

我有這些文件:爲什麼不能編譯?

c:\MY_SOURCES\AClient.java 
c:\MY_SOURCES\Pluto.java 
c:\MY_SOURCES\com\Classes\Pluto.class 

進入AClient.java我

import com.Classes.*; 
Pluto p = new Pluto(); 

當我編譯的文件:

javac -classpath . AClient.java 

編譯器告訴我,它無法訪問Pluto作爲不好的源文件Pluto.java ...但如果我移動Pluto.java遠離c:\MY_SOURCES它編譯。

+1

請修正你的消息。在其中一個地方,你可以在其他'MY_SOURCES'中指定'MY_JAVA_SOURCES'。此外,我無法瞭解每個文件的位置。請爲每個**文件和編譯選項寫一個完整的路徑。 – bezmax 2010-06-22 08:08:26

+0

好的...我編輯了更好的問題 – xdevel2000 2010-06-22 08:19:58

回答

2

您的源文件夾應鏡像您的包結構。如果它不javac弄糊塗。理想情況下,您編譯的.class文件夾應該與您的源文件夾位於不同的根目錄。

所以

c:\MY_SOURCES\AClient.java (assuming in the default package) 
c:\MY_SOURCES\com\Classes\Pluto.java 

c:\MY_COMPILED\com\Classes\Pluto.class 

javac -classpath=c:\MY_COMPILED -d 
c:\MY_COMPILED\ c:\MY_SOURCES\AClient.java 
1

只是重申...

C:\MY_SOURCES\AClient.java 
C:\MY_SOURCES\com\Classes\Pluto.java 

假設AClient.java包含...

import com.Classes.*; 

public class AClient { 
    Pluto p = new Pluto(); 
} 

本彙編作品確實

C:\MY_SOURCES\javac *.java 
+0

不正確: C:\ MY_SOURCES \ com \ Classes \ Pluto.class不是Pluto.java,它進入C:\ MY_SOURCES – xdevel2000 2010-06-22 08:15:33

+0

發佈Pluto.java的內容或確切的錯誤...或者看看你是否將Pluto.java移動到com/Classes文件夾。如果Pluto.java和Pluto.class都相似。 – prem 2010-06-22 08:30:18

0

也許你在冥王星引入新的誤差文件。當你嘗試編譯AClient時,它也會嘗試編譯Pluto(因爲它被AClient使用)並且會出現錯誤。如果你刪除了Pluto.java,你可以從之前的(成功的)編譯中獲得類文件,並使用它,並且它可以工作。您應該檢查Pluto.java並查看它是否自行編譯,或者是否有任何其他問題。