根据这个主题: Reasons of getting a java.lang.VerifyError
java.lang.VerifyError
获取执行 jvm 的版本是否比用于编译的 jvm 更新。
我们总是可以使用以下 jvm 选项解决这个问题:-XX:-UseSplitVerifier
。
据此:
https://stackoverflow.com/a/16467026/2674303
使用此选项是“绝对安全”的。
因此我不明白为什么 java.lang.VerifyError 是阻止成功编译的问题。请澄清。也许对于检测字节码的库来说不安全?
最佳答案
您链接到的问答是指一种特定类型的验证错误,使用替代验证程序可以安全地解决该错误。但是,还有其他类型的验证错误您不应该忽略...并且您不能以这种方式处理。
简而言之,链接问题中的建议并不普遍适用。一般而言:
切换到替代 validator 可能无济于事。
如果您完全禁用验证程序,您将面临运行可能违反 JVM 运行时类型安全(等)约束的代码的风险。这可能会导致安全问题和/或堆损坏和 JVM 硬崩溃。
如果您有特定的 VerifyError 需要建议,请包括完整的异常消息和堆栈跟踪,并描述它发生的情况。请注意,安德烈的回答是正确的,验证错误的一个常见原因是为各种目的进行“字节码工程”的代码中的错误。通常,修复是更改为相应依赖项的不同版本。
关于java - 为什么 java.lang.VerifyError 会阻止编译成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26084822/