【发布时间】:2010-09-11 03:15:54
【问题描述】:
我正在调查以下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 出现故障。 任何可以查看的想法都会有所帮助。
【问题讨论】:
-
我是因为使用了错误版本的比较失败。花了 FOREVER 才找到……那很痛苦
-
我在 Android Studio 中使用即时运行时得到了它(编译时热交换)。把它关掉就行了。
标签: java exception deployment verifyerror