【问题标题】:Java and Makefiles: Is there any way to ensure if one class is dependent on another, to build that class first without being explicit?Java 和 Makefiles:有没有办法确保一个类是否依赖于另一个类,首先构建该类而不是明确的?
【发布时间】:2018-09-27 01:28:47
【问题描述】:

假设我有2个类,Main.java和Car.java,Main.java依赖Car.java在编译时已经编译,但是,使用find查找src文件并一一编译(这样如果一个没有改变就不需要重新编译) Main.java 总是先构建,但失败了。这个问题只会在更复杂的项目中变得更糟。在 C 语言中,使用头文件可以缓解这种情况,但 java 没有这样的特性。

我目前明确告诉 make Main.java 依赖于 Car.java。虽然这适用于小型项目,但对于较大的项目,当每个文件依赖于少数其他文件并且每个文件都依赖于其他文件等等时,这变得不太可行。

【问题讨论】:

  • 您确定这是问题吗?顺便说一句,你为什么在 java 中使用Makefiles?
  • 阳性。如果我将构建规则设置为忽略错误,它将在构建 Main.java 失败后继续构建“Car.java”,当我再次运行它时,Main.java 构建,因为“Car.class”现在存在于目标目录。如果 Java 类尚不存在,则无法导入它..
  • 为什么不javac *.java?
  • 在那种情况下,我每次构建项目时都必须重新构建每个 java 类。因此,对于一个包含 15 到 20 个 java 源文件的项目,如果我只更改其中 1 个源文件,我必须构建所有 15 到 20 个 java 源文件,这可能需要相当长的时间。如果一次构建一个,如果我更改一个源文件,则只需要重新编译那个。

标签: java makefile


【解决方案1】:

https://www.oreilly.com/library/view/managing-projects-with/0596006101/ch09.html 根据上面的链接,如果不是不可能的话,在Java中单独编译源文件的类C语言的预期效果是非常困难的。但是,在引用和重新引用相同的类文件时,java 编译器并不像 C 编译器那么慢,因此在一次调用中编译所有 java 源文件时,这提供了性能提升。这似乎是解决这个问题的最佳方法。

编辑:这也大大降低了大型项目的 makefile 的复杂性,使它们更易于管理。

【讨论】:

    猜你喜欢
    • 2012-03-19
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多