这是一个非常基本的问题,我还无法找到令人满意的答案。
如果我的目录中有两个类 TestCar.java
Car.java
,当我执行 javac TestCar.java
时,程序会成功编译并为每个类创建两个 .class 文件。
我只要求编译器编译 TestCar.java
,但不知何故,编译器发现它还需要编译 Car.java
文件。如果这就是它的工作原理,我应该能够要求 javac 仅编译我的程序的主类,并且它应该能够编译程序依赖的所有 .java 文件。如果这是真的,为什么我们需要发出诸如 javac *.java 或 javac dir1/*.java dir2/*java 等命令?
即使使用包,我们也应该能够通过执行来编译所有文件
javac com/project/MainClass.java
并且编译器应该能够编译程序所依赖的所有文件。那么为什么所有这些关于“如何编译多个 java 文件
”的问题呢?
最佳答案
编译器没那么聪明。例如,它无法通过反射知道您使用哪些类,因此它仅适用于最基本的情况。
这就是为什么我们有像 ant、maven 或 gradle 这样的构建系统来处理编译,而无需手动输入所有需要的类。
关于java - 为什么我们需要让javac来编译多个源文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29695273/