2011-04-14 69 views
1

我有以下類的結構:Java命令行編譯問題和依賴條件

Main Class: WordNet.java 
WordNet.java uses SAP.java 
SAP.java uses DeluxeBFS.java 

當我運行

$ javac WordNet.java 

我回來

WordNet.class 
WordNet$Synset.class 
SAP.class 
DeluxeBFS.class 
DeluxeBFS$markDist.class 

同義詞集和markDist是命令私人班。

我不明白的是,爲什麼如果我在DeluxeBFS中進行更改並重新編譯WordNet,則不會編譯該更改。由於WordNet依賴於DeluxeBFS,因此如果發生更改,java編譯器不應重新編譯它是做成?它似乎甚至沒有觸及文件。

回答

1

不,編譯器找到DeluxeBFS的類文件,這就結束了 - 它不會嘗試尋找它的源代碼(當然這可能是)。

通常,從命令行使用javac構建時,重新編譯所有內容是個好主意。

如果你想增量編譯通知哪些文件已被改變等,你應該使用像Eclipse這樣的IDE。

1

你回答了你自己的問題 - javac不會重新編譯所有的依賴關係,只有作爲輸入給出的文件。這實際上是一個優勢 - 像Eclipse這樣的IDE只會編譯修改後的文件而不是整個代碼庫