java - 如何独立编译java类
问题描述
我目前想知道您是否可以在没有依赖项的情况下编译 Java 类文件,例如 C 或 C++ 中的 .o 文件。比如我有一个类A,里面有一个类B的实例,但是我只想编译类A。有没有办法呢?重点是使用 make 编译一个 java 程序,因为 Gradle 和 Maven 不会让我做我想做的事。
谢谢你。
解决方案
Java 是一种静态类型语言,如 C/C++,因此您的类使用的任何类或方法都必须是众所周知的,才能编译您的类。
在 C/C++ 中,我们使用头文件来定义类和方法,而不是实现它们。这样我们就可以编译使用它们的类,只使用头文件,而不是所需类/方法的源文件。
Java 没有头文件,因此类/方法必须完整可用。它们不必作为源代码提供,即它们可以预编译并作为.class
文件提供,通常打包在.jar
文件中。
所以如果你有依赖于类B的类A,你可以单独编译B,然后单独编译A,只要B.class
在类路径上。
与 C/C++ 不同,Java 编译器可以一起编译许多文件,例如,如果 A 和 B 相互依赖(循环依赖),则需要这样做。
如果 A 和 B 是同一项目的一部分,则将它们一起编译。如果A和B属于不同的项目,则先构建项目B,产生一个B.jar
文件,然后构建项目A,并在构建项目A的时候给出classpath下的jar文件。
推荐阅读
- java - 调整并行 GC 以实现高效的 Young GC
- ios - 无法渲染 autoLayout 状态,代理崩溃
- marklogic - XML 结构在保存到 MarkLogic 时被修改
- node.js - 在 Google Cloud Functions 中缓存未加密的 API 密钥是否安全?
- java-8 - java 8 中 java BigDecimal 与 IBM 和 Oracle 的实现有什么区别?
- sql-server - Spyder 内核死机
- sqlite - 使用带有 python 的 sqlite3 连接到数据库时出错
- php - PHP fgets 返回一个空字符串
- python - 为什么我不能在 1 行使用 python 打印句子和变量值?
- python - 从另一个数据帧中查找最接近值的索引