使用 javac 编译 Java 文件集时缺少 class 文件

Missing class files when compiling set of Java files using javac

我正在使用 javac 编译一组 Java 个文件。使用以下命令,我将所有 Java 个文件保存到一个文本文件中:

dir *.java /S /B > files.txt

这里是files.txt的简短摘录:

C:\Users\User\Desktop\source\org\apache\commons\lang3\AnnotationUtils.java
C:\Users\User\Desktop\source\org\apache\commons\lang3\ArchUtils.java
C:\Users\User\Desktop\source\org\apache\commons\lang3\ArrayUtils.java
C:\Users\User\Desktop\source\org\apache\commons\lang3\BitField.java
C:\Users\User\Desktop\source\org\apache\commons\lang3\BooleanUtils.java
C:\Users\User\Desktop\source\org\apache\commons\lang3\CharEncoding.java
...

现在我将所有源代码都放在一个文件中,我想使用以下命令编译它们:

javac -encoding ISO-8859-1 -g -cp @files.txt

输出...

Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

当我现在切换到源文件夹时,我可以看到一些编译文件,但不是全部。例如,文件 AnnotationUtils.class 丢失。

我希望看到每个 Java 文件都有一个 class 文件加上内部 class 的 class 个文件,或者至少在编译期间看到一条错误消息。

是什么原因造成的,我该如何解决?


问题出在 -cp 参数上。它用于将其他文件添加到类路径,如 jar 文件。我认为即使我没有指定任何其他文件,如果我一直使用它也不会有任何区别。现在我只在我真的需要它时才使用它,它解决了我的问题。所有预期的文件都在那里。

虽然我不确定为什么这不能编译所有文件。