我正在使用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 文件中看到一个类文件以及内部类的类文件,或者至少在编译期间看到一条错误消息。
造成这种情况的原因是什么以及如何解决?
<小时/>- 我正在使用 org.apache.commons.lang3 的来源
- 我尝试编译:
- OpenJDK 11
- JDK 11
- JDK 8
最佳答案
问题出在 -cp
参数上。它用于将其他文件添加到类路径,例如 jar 文件。我认为即使我没有指定任何其他文件,当我一直使用它时也没有任何区别。现在我只在我真正需要它时才使用它并且它解决了我的问题。所有预期的文件都在那里。
虽然我不确定为什么这不能编译所有文件。
关于java - 使用 javac 编译 Java 文件集时缺少类文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57560432/