2015-04-17 52 views
0

这是一个非常基本的问题,我无法找到可以满足的答案。为什么我们需要问javac来编译多个源文件?

如果我在我的目录中有两个类TestCar.javaCar.java,当我执行javac TestCar.java时,程序成功编译并导致为每个类创建两个.class文件。

我只要求编译器编译TestCar.java,但不知何故编译器发现它也需要编译Car.java文件。如果这是它的工作方式,我应该能够要求javac只编译我的程序的主类,它应该能够编译程序依赖的所有.java文件。如果那是真的,为什么我们需要发出像javac *.javajavac dir1/*.java dir2/*java等命令?

即使使用包时,我们应该能够通过执行

javac com/project/MainClass.java 

编译所有的文件和编译器应该能够编译所有的程序依赖于文件。那么为什么所有这些关于“how to compile multiple java files”的问题呢?

回答

1

编译器不是那么聪明。例如,它不能知道你使用了哪些类,所以它只适用于最基本的情况。

这就是为什么我们要构建像ant,maven或gradle这样的系统来处理编译而不必手动输入所有需要的类。

+0

实际上,编译器非常非常聪明 - 它只是愚蠢的东西,它不应该担心像依赖和可以由你提到的工具处理的东西。 – OldCurmudgeon

+0

如果我的程序没有使用反射,我应该能够像我刚刚提到的那样进行编译(仅编译主类)? – DesirePRG

+0

@DesirePRG不,我建议您查看构建系统的maven或gradle。 – Kayaman

相关问题