解释“不兼容的函数参数”异常消息

时间:2012-06-14 19:40:33

标签: java exception verifyerror

关于java.lang.VerifyError异常的快速问题。假设我收到如下错误:

Java call terminated by uncaught Java exception: java.lang.VerifyError:(class: com/.../MyClassName, method: <init> signature: (Ljava/io/Reader;)V) Incompatible argument to function

你能帮我理解“init”和“(Ljava / io / Reader;)V)”部分的含义吗?它们看起来不像我的方法名称或签名,但我对java不太熟悉。谢谢!

3 个答案:

答案 0 :(得分:7)

此错误意味着代码中的某个位置,您尝试调用构造函数(<init>方法)传递错误的参数集。期望的参数是Reader对象。

这可能意味着您之前编译了一个类文件,然后以某种方式更改了类定义,而无需重新编译该类文件。因此,您的代码会尝试调用不再存在的函数。尝试重新编译代码,看看是否修复了它。

希望这有帮助!

答案 1 :(得分:3)

如果您在应用程序服务器上运行应用程序,则可能是类加载问题。

您是否针对库编译了代码,当您尝试运行代码时,它是针对库的另一个(较旧的?)版本运行的。

旧库可能没有该方法或构造函数。

答案 2 :(得分:0)

只是为了留下不同的原因。

总是在应用程序服务器上(在我的案例中是WildFly 10),您可能正在模块和EAR库上加载相同的库。如果此库包含需要由模块实现的接口,则可能会导致冲突,因为由两个不同的类加载器加载的相同类/接口被认为是两种不同的类型。