首页 > 解决方案 > 如何独立编译java类

问题描述

我目前想知道您是否可以在没有依赖项的情况下编译 Java 类文件,例如 C 或 C++ 中的 .o 文件。比如我有一个类A,里面有一个类B的实例,但是我只想编译类A。有没有办法呢?重点是使用 make 编译一个 java 程序,因为 Gradle 和 Maven 不会让我做我想做的事。

谢谢你。

标签: javajavac

解决方案


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文件。


推荐阅读