Java 中为什么会出现 java.lang.VerifyError,如何解决?
原文:https://www . geesforgeks . org/why-Java-lang-verify error-in-Java-occurs-and-how-solution-this/
Java 虚拟机(JVM)不信任所有加载的字节码,这是 Java 安全模型的核心原则。在运行时,JVM 将加载。类文件,并试图将它们链接在一起形成一个可执行文件——但这些加载的有效性。类文件未知。以确保装载。类文件不会对最终的可执行文件构成威胁,验证过程是在。类文件。
此外,JVM 确保二进制文件格式良好。例如,JVM 将验证类不包含最终类。在许多情况下,验证在有效的、非恶意的字节码上失败,因为较新版本的 Java 比旧版本有更严格的验证过程。例如,JDK 13 可能添加了一个在 JDK 7 中未强制实施的验证步骤。因此,如果我们用 JVM 13 运行一个应用程序,并包含用旧版本的 Java 编译器(javac)编译的依赖项,JVM 可能会认为过时的依赖项是无效的。
因此,当链接老。类文件,JVM 可能会抛出一个 java.lang.VerifyError。
验证错误从 1.0 版本的 Java 开始就存在了。
验证错误的结构:
施工方T0
此构造函数创建 VerifyError 类的实例,将 null 设置为其消息。
VerifyError(String s)
此构造函数使用指定的字符串作为消息,创建 VerifyError 类的实例。这里抛出错误的类是通过字符串参数指示的。
出现此错误的三个最常见原因如下:
原因 1: “每当一个声明为 final 的类被扩展时,就会抛出这个错误。”
程序:
爪哇
// Java program to show the occurence
// of java.lang.VerifyError
class B extends A {
public static void main(String args[])
{
System.out.println("my super class name:-"
+ myname);
}
}
public class A
{
static String myname = "A";
}
版权属于:月萌API www.moonapi.com,转载请注明出处