javac 仅用于编译主文件时是不是编译同一目录中的多个文件?
Posted
技术标签:
【中文标题】javac 仅用于编译主文件时是不是编译同一目录中的多个文件?【英文标题】:Does javac compile multiple files within the same directory when used to compile only main file?javac 仅用于编译主文件时是否编译同一目录中的多个文件? 【发布时间】:2021-11-27 22:35:30 【问题描述】:我在同一个文件夹中使用多个 java 文件,包括一个主文件。主文件直接或间接使用其他文件。 现在我正在更新一个文件(不是主文件),但是当我只编译和运行主文件时,更改会反映在主文件中。
【问题讨论】:
是的,它会重新编译所有依赖于您正在编译的文件的 .java 文件(如果它们已过期)。 【参考方案1】:From the official documentation(强调我的):
在命令行或参数文件中指定的源文件的顺序并不重要。 javac 会将文件作为一个组编译在一起,并会自动解决各种源文件中声明之间的任何依赖关系。
您可以通过将这些文件中的每一个放在一个文件夹中并运行 javac Test.java
来演示这一点
Test.java
class Test
public static void main(String... args)
MyObject o = new MyObject();
o.method();
MyObject.java
class MyObject
void method()
System.out.println("method");
未使用的.java
class Unused
将创建文件Test.class
和MyObject.class
。 Unused.class
不会被创建。
【讨论】:
以上是关于javac 仅用于编译主文件时是不是编译同一目录中的多个文件?的主要内容,如果未能解决你的问题,请参考以下文章
javac 及 java命令的使用问题(错误或无法加载主类)
javac编译单文件多文件引入jar包-cp解决无法加载主类问题