【问题标题】:Unable to get javac to automatically recompile a source file无法让 javac 自动重新编译源文件
【发布时间】:2014-05-09 11:29:13
【问题描述】:

我正在试验javac 命令行选项,以了解-sourcepath-classpath 选项。当我运行javac 并尝试了四种不同的命令行选项时,我无法获得重新编译的.class 文件。

这是我的文件夹结构。请注意,由于测试,Test.java 文件位于“bat”文件夹内,这是一个公认的奇怪位置。

projects \ prj1 \ bat \ bat.bat
                        Test.java
                        Test.class   <--- unable to obtain recompiled file.

                  src \ Main.java
                        Main.class

我的两个.java测试文件的内容是:

// Main.java, located in the src folder
class Main {
    public static void main(String[] args) {
        new Test();
    }
}

// Test.java, located in the bat folder
class Test {}

关于在命令提示符下执行javac,这里有四个我尝试过的选项。我从一个名为 bat.bat 的批处理文件中运行了这些命令,该文件位于“bat”文件夹中。

javac ..\src\Main.java                      (no sourcepath, no cp)
javac -sourcepath . ..\src\Main.java        (sourcepath)
javac -cp . ..\src\Main.java                (cp)
javac -sourcepath . -cp . ..\src\Main.java  (sourcepath, cp)

在上述所有javac 命令中,我无法为 Test.java 文件获取重新编译的 .class 文件。这是因为我没有编辑 Test.java 文件,因为最初编译它?请注意,我没有设置 CLASSPATH 环境变量。谢谢。

【问题讨论】:

  • 我使用 IDE,它可以确保我的代码根据需要重新编译,而无需我保存文件。只需键入代码并运行它。

标签: java classpath javac


【解决方案1】:

如果目标/输出文件夹中已经存在类文件,javac 只会在源 java 文件自类文件的日期/时间以来被修改时重新编译。

如果你想重新编译源文件,那么在调用javac之前先删除*.class文件。

【讨论】:

    最近更新 更多