一、问题描述
有源码文件“A.java”,“A.java”依赖于“B.class”,而“B.class”又依赖于“C.class”。使用javac
工具编译“A.java”,要想成功编译“A.java”,既需要加载“B.class”,还需要加载“C.class”。
二、分析解决
其实一般情形下,使用javac
工具编译“A.java”,要想成功编译“A.java”,只需要加载“B.class”即可。现在还需要加载“C.class”,原因可能有:
- 该
javac
版本实现有bug - 该
javac
版本针对新的Java语言语法的确需要再加载依赖的依赖
总结来说,javac
编译时是否加载依赖的依赖跟具体实现相关,这个知识点并不很重要,因此无需过多关注。
参考文献: [1]https://stackoverflow.com/questions/40255718/compiling-with-jdk-1-8-java-cannot-access-class-file-class-file-not-found [2]https://bugs.openjdk.java.net/browse/JDK-8055048 [3]http://openjdk.java.net/groups/compiler/doc/hhgtjavac/index.html [4]http://scg.unibe.ch/archive/projects/Erni08b.pdf