在 Oracle 的 Java 中 - Essential Classes Trail我发现以下说法:
Error Class
When a dynamic linking failure or other hard failure in the Java virtual machine occurs, the virtual machine throws an Error. [...]
Java 和 JVM 上下文中的动态链接失败到底意味着什么?这与类加载器在运行时可能遇到的问题有关吗?
最佳答案
在 Java 中,您可以动态加载 Class 对象,验证该 Class 及其实例是否与当前加载的类兼容的逻辑称为动态链接。
以下是您可能以 java.lang.LinkageError 形式获取链接失败的示例:
1)你有类和接口(interface)。您稍后可以修改该接口(interface)方法签名并使用该新接口(interface)启动 VM。现在,如果您动态尝试加载类,您将遇到链接失败,因为该类是使用旧版本的接口(interface)方法签名编译的,并且无法使用新的接口(interface)方法签名。
2) 您从类加载器 CL1 和 CL2 加载相同的类。然后,您从 CL1 加载的类创建对象 o1 并在 CL2 加载的代码中使用该对象。
关于java - 什么是 JVM 中的动态链接失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44398939/