Java命令行编译问题和依赖关系

时间:2011-04-14 14:57:09

标签: java compiler-construction jvm javac

我有以下类结构:

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编译器不应该重新编译它制作?似乎文件甚至没有触及。

2 个答案:

答案 0 :(得分:1)

不,编译器找到DeluxeBFS的类文件,这就是它的结尾 - 它不会尝试查找它的源代码(可能是的任何地方疗程)。

通常,当您使用javac从命令行构建时,重新编译所有内容是个好主意。

如果你想要增加编译,注意哪些文件已被更改等,你应该使用像Eclipse这样的IDE。

答案 1 :(得分:1)

您回答了自己的问题 - javac不会重新编译所有依赖项,只会重新编译作为输入的文件。这实际上是一个优势 - 像Eclipse这样的IDE只会编译修改后的文件而不是整个代码库