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.classMyObject.classUnused.class 不会被创建。

【讨论】:

以上是关于javac 仅用于编译主文件时是不是编译同一目录中的多个文件?的主要内容,如果未能解决你的问题,请参考以下文章

javac 及 java命令的使用问题(错误或无法加载主类)

javac实现原理

javac编译单文件多文件引入jar包-cp解决无法加载主类问题

如何使用.jar库编译Java程序

如何用javac命令编译一个目录以及子目录下所有的java文件呢?

javac如何编译.java,.jar