私は以下を調査しています 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)
これは、サーブレットがデプロイされている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を実行している自動テストマシンでも、サーバーの起動時に同じエラーが表示されます。
アプリケーションの残りの部分は問題なく実行され、その1つのサーブレットだけが故障しています。どこを見るかについてのアイデアは参考になります。