我有以下类结构:
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
Synset和markDist是私有类。
我不明白的是,为什么如果我在DeluxeBFS中进行更改并重新编译WordNet,则不会编译该更改。由于WordNet依赖于DeluxeBFS,如果更改是,则java编译器不应该重新编译它制作?似乎文件甚至没有触及。
答案 0 :(得分:1)
不,编译器找到DeluxeBFS
的类文件,这就是它的结尾 - 它不会尝试查找它的源代码(可能是的任何地方疗程)。
通常,当您使用javac从命令行构建时,重新编译所有内容是个好主意。
如果你想要增加编译,注意哪些文件已被更改等,你应该使用像Eclipse这样的IDE。
答案 1 :(得分:1)
您回答了自己的问题 - javac不会重新编译所有依赖项,只会重新编译作为输入的文件。这实际上是一个优势 - 像Eclipse这样的IDE只会编译修改后的文件而不是整个代码库