java - Java HotSpot:类的延迟加载不起作用
问题描述
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
Java 延迟加载类不起作用。例如,
public class Foo() {
public Bar createBar() {
return new Bar(false); <----------raised exception
}
}
public class Bar {
public Bar(boolean createHello) {
if (createHello) {
Hello hello = new Hello(); // Hello: not in runtime classpath
...
}
}
}
Hello 类对于应用程序是可选的,因此它可能不在运行时类路径中。
运行代码时,JVM 抛出
java.lang.NoClassDefFoundError: Hello
在new Bar(false)
执行构造函数之前指示的行。
对于类的延迟加载,永远不应加载 Hello.class。
Java HotSpot JVM 是否使用延迟加载类?延迟加载是 JLS 标准还是特定于实现?
如何解决这个问题?反思对我们来说不是正确的解决方案。
解决方案
推荐阅读
- javascript - 如何通过标签名称找到伟大的父节点onclick javascript中的嵌套子节点?
- r - 使用kmeans()后:如何判断哪个点属于哪个组?
- regex - 在 Haskell 中实现 Regex 时遇到问题
- ruby - Ruby 多进程同步
- python - 尝试在 Python 中使用 f.write 写入文本文件
- virtualization - Xen中如何获取domU的机器内存分配
- certificate - 签署文件和解密文件有什么区别?
- python - 在嵌套数组中生成数字塔
- php - 如何在 laravel 中使用搜索功能?
- java - 使用循环创建存储多个员工数据的随机访问文件