我正在调查以下 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出了问题。任何指导都将非常有帮助。