根据这个主题:
Reasons of getting a java.lang.VerifyError

java.lang.VerifyError获取执行jvm的版本是否高于用于编译的jvm。

我们始终可以使用以下jvm选项来解决此问题:-XX:-UseSplitVerifier

据此:

https://stackoverflow.com/a/16467026/2674303

使用此选项是“完全安全”的。

因此,我不明白为什么java.lang.VerifyError是阻止成功编译的问题。请说清楚。对于使用哪个仪器字节码的库来说,也许不安全?

最佳答案

您链接的“问题与答案”指的是一种特定的验证错误,可以通过使用替代验证程序来解决该验证错误。但是,还有其他类型的验证错误,您不应忽略...,并且不能以这种方式处理。

简而言之,链接问题中的建议通常并不适用。一般来说:


切换到替代验证程序可能无济于事。
如果完全禁用验证程序,则冒着可能运行代码的风险,这些代码可能违反JVM的运行时类型安全性(etc)约束。这可能导致安全性问题和/或堆损坏以及严重的JVM崩溃。




如果您有特定的VerifyError需要建议,请提供完整的异常消息和堆栈跟踪,并描述发生这种情况的情况。请注意,Andrey的回答是正确的,验证错误的常见原因是出于各种目的而在执行“字节码工程”的代码中的错误。通常,解决方法是更改​​为相应依赖项的其他版本。

09-20 17:48