伙计们,任何人都可以解释以下情况:
1)Web应用程序的module1.jar
目录中包含lib
。该模块中有一个类A
:
package module1;
import module2.B;
public interface IA {
void methodOk() {}
void methodWithB(B param) {}
}
package module1;
import module2.B;
public class A implements IA {
public A() {}
//...
void methodWithB(B param) {
//do job on B
}
}
2)module2.jar
不存在 - 它不在类路径中。
3)应用程序能够创建类A
的对象,尽管它缺少依赖项。在应用程序中,调用方法A.methodOk()。
如果您可以参考任何关于此的规范,那将会很酷。 非常感谢。
答案 0 :(得分:3)
由于代码已经编译,因此在您直接使用类B
之前不会抛出错误。从代码的外观来看,实际上并没有使用B
的实例。
答案 1 :(得分:2)
如果B在任何地方都没有使用,那么生成的字节码将没有对module2.B的引用,因此它会被编译掉。在这种情况下,编译时没有依赖项除之外。
如果问题不明确且B 在A某处使用,那么我有兴趣看到更多代码来尝试确定发生了什么。
答案 2 :(得分:1)
从类加载器的角度来看它。如果您不必加载该类,则不关心该类的字节码是否丢失。
你的问题是,“什么触发了类加载?”
我能想到的两个原因是: - 施工 - 静态访问