9

关于 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 不太熟悉。谢谢!

4

3 回答 3

7

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

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

希望这可以帮助!

于 2012-06-14T19:43:39.417 回答
3

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

您针对库编译了代码,当您尝试运行代码时,它正在针对库的不同(旧?)版本运行。

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

于 2012-06-14T19:55:34.730 回答
0

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

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

于 2016-02-29T15:51:26.597 回答