当前位置: 首页 > 面试题库 >

获取java.lang.VerifyError的原因

汝天宇
2023-03-14
问题内容

我正在调查以下内容 java.lang.VerifyError

java.lang.VerifyError: (class: be/post/ehr/wfm/application/serviceorganization/report/DisplayReportServlet, method: getMonthData signature: (IILjava/util/Collection;Ljava/util/Collection;Ljava/util/HashMap;Ljava/util/Collection;Ljava/util/Locale;Lorg/apache/struts/util/MessageRe˜̴Mt̴MÚw€mçw€mp:”MŒŒ
                at java.lang.Class.getDeclaredConstructors0(Native Method)
                at java.lang.Class.privateGetDeclaredConstructors(Class.java:2357)
                at java.lang.Class.getConstructor0(Class.java:2671)

当启动部署了servlet的jboss服务器时,就会发生这种情况。它是用jdk-1.5.0_11编译的,我尝试用jdk-1.5.0_15重新编译,但没有成功。编译运行正常,但是在部署时会发生java.lang.VerifyError

当我更改方法名称并收到以下错误时:

java.lang.VerifyError: (class: be/post/ehr/wfm/application/serviceorganization/report/DisplayReportServlet, method: getMD signature: (IILjava/util/Collection;Lj    ava/util/Collection;Ljava/util/HashMap;Ljava/util/Collection;Ljava/util/Locale;Lorg/apache/struts/util/MessageResources ØÅN|ØÅNÚw€mçw€mX#ÖM|XÔM
            at java.lang.Class.getDeclaredConstructors0(Native Method)
            at java.lang.Class.privateGetDeclaredConstructors(Class.java:2357
            at java.lang.Class.getConstructor0(Class.java:2671)
            at java.lang.Class.newInstance0(Class.java:321)
            at java.lang.Class.newInstance(Class.java:303)

你可以看到显示了更多的方法签名。

实际的方法签名是

  private PgasePdfTable getMonthData(int month, int year, Collection dayTypes,
                          Collection calendarDays,
                          HashMap bcSpecialDays,
                          Collection activityPeriods,
                          Locale locale, MessageResources resources) throws   Exception {

我已经尝试过使用它进行查看,javap并且给出了应有的方法签名。

当我的其他同事签出代码,对其进行编译和部署时,他们会遇到相同的问题。当构建服务器获取代码并将其部署在开发或测试环境(HPUX)上时,会发生相同的错误。同样,运行Ubuntu的自动测试机在服务器启动期间也会显示相同的错误。

该应用程序的其余部分可以正常运行,只有一个servlet发生故障。在哪里寻找任何想法都会有所帮助。


问题答案:

java.lang.VerifyError 针对与运行时所用库不同的库进行编译时,可能会出现这种情况。

例如,在尝试运行针对Xerces 1编译的程序但在类路径中找到Xerces 2时,这发生在我身上。所需的类(在org.apache.*命名空间)在运行时被发现,所以ClassNotFoundException是没有结果。对类和方法进行了更改,以便在运行时找到的方法签名与编译时不匹配。

通常,编译器会标记方法签名不匹配的问题。JVM将在加载类时再次验证字节码,并VerifyError在字节码尝试执行不应允许的操作时抛出-例如,调用返回的方法,String然后将该返回值存储在包含a的字段中List



 类似资料:
  • 问题内容: 我正在使用Hadoop的Java项目中工作,并且有一个java.lang.VerifyError,我不知道如何解决它。我看到有人遇到相同类型的问题,但没有答案,或者解决方案在我的情况下不起作用。 我的课 : 和错误: 你有什么主意吗 ?如果您需要更多帮助我的问题,请问。 问题答案: 我解决了我的问题。 导入的jar很好,但是我之前尝试过的另一个版本(可能是较旧的版本)也位于项目文件夹中

  • 问题内容: 在我的Android应用中,我总是会收到VerifyErrors!我不知道为什么。每当我包含一个外部JAR时,当我尝试启动我的应用程序时总是会收到VerifyErrors(除了一次,当我包含Apache Log4j时)。 通常,我会通过获取库的源代码并将其添加到我的项目中来解决此问题,但是我正在尝试放置GData客户端库。 我可以在源代码中获得它,但是它不能依赖(mail.jar,ac

  • 我有一个来验证它的输入: 在中,我得到的消息(即)类似于: org.springframework.validation.BeanPropertyBindingResult:1 errors字段“item”上的对象“item holder”字段错误:拒绝的值[非常糟糕的值];代码[typemismatch.itemholder.item,typemismatch.item,typemismatch

  • 问题内容: 我正在尝试对源自教程的一些非常简单的Hibernate代码进行原型设计,并且在cglib2中遇到了我不了解的错误(完整的堆栈跟踪位于本文的结尾)。我可能正在尝试根据我的简单 main() 和bean XML(如下)创建“ productBoProxy” 。 我尝试了许多不同版本的cglib都无济于事。我非常感谢能帮助我找到解决此问题的正确方法的任何人。 App.java : Produ

  • 问题内容: 有没有办法从获取原始/原始JSON值? 问题: 现在是,但是我需要原始字符串。 有没有办法获得这个原始价值?另外,我无法更改创建方式(例如更改设置),因为它作为参数传递给我的课程… (参考:原始的NJsonSchema问题) 问题答案: 您无法获取原始字符串,无法识别日期字符串并将其转换为自身内部的结构。如果您这样做,则可以看到以下内容: 但是,您可以通过执行以下操作以ISO 8601

  • 返回值的原生类型。 返回值小写的构造函数名称,如果值为 undefined 或 null ,则返回 "undefined" 或 "null"。 const getType = v => v === undefined ? 'undefined' : v === null ? 'null' : v.constructor.name.toLowerCase(); getType(new Set(