【问题标题】:Java Command Line Compilation Problems and DependeciesJava 命令行编译问题和依赖关系
【发布时间】:2011-04-14 14:57:08
【问题描述】:

我有以下类结构:

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 compiler-construction jvm javac


    【解决方案1】:

    不,编译器会找到 DeluxeBFS 的类文件,这就是它的结束 - 它不会尝试寻找它的源代码(当然可以在 任何地方) .

    一般来说,使用 javac 从命令行构建时重新编译所有内容是个好主意。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2014-03-18
        • 2011-05-15
        • 1970-01-01
        • 1970-01-01
        • 2019-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-22
        相关资源
        最近更新 更多