java.lang.VerifyError针对与运行时所用库不同的库进行编译时,可能会出现这种情况。
例如,在尝试运行针对
Xerces 1编译的程序但在类路径中找到
Xerces 2时,这发生在我身上。所需的类(在
org.apache.*命名空间)在运行时被发现,所以
ClassNotFoundException是没有结果。对类和方法进行了更改,以便在运行时找到的方法签名与编译时不匹配。
通常,编译器会标记方法签名不匹配的问题。JVM将在加载类时再次验证字节码,并
VerifyError在字节码尝试执行不应允许的操作时抛出-例如,调用返回的方法,
String然后将该返回值存储在包含a的字段中
List。



