Java命令行编译问题和依赖

问题描述 投票:0回答:2

我有以下班级结构:

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 编译器不应该重新编译它吗?看起来该文件甚至没有被触及。

java jvm javac
2个回答
1
投票

不,编译器找到

DeluxeBFS
的类文件,这就是它的结束 - 它不会尝试寻找它的源代码(当然可能是 anywhere)。

一般来说,当您使用 javac 从命令行构建时,最好重新编译所有内容。

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


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.