[解決済み] java.lang.VerifyErrorが発生する原因
質問事項
以下のことを調査しています。
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つのサーブレットだけが故障しています。 どこを見ればいいのか、何かヒントがあれば助かります。
解決方法は?
java.lang.VerifyError
は、実行時に使用しているライブラリとは異なるライブラリに対してコンパイルした場合に発生する可能性があります。
例えば、Xerces 1に対してコンパイルされたプログラムを実行しようとしたら、クラスパス上にXerces 2が見つかったときに、このようなことが起こりました。 必要なクラス (
org.apache.*
名前空間)は実行時に見つかったので
ClassNotFoundException
は
ない
その結果 クラスとメソッドに変更があり、実行時に見つかったメソッドのシグネチャが、コンパイル時にあったものと一致しないのです。
通常、コンパイラは、メソッドのシグネチャが一致しない問題に対してフラグを立てます。 JVMは、クラスがロードされたときに、バイトコードを再度検証し、そして
VerifyError
を返すメソッドを呼び出すなど、バイトコードが許されないことを行おうとしている場合。
String
を保持するフィールドにその戻り値を格納します。
List
.
関連
-
[解決済み】このコンパイルユニットは名前付きモジュールに関連しているため、名前付きパッケージeclipseを宣言する必要があります。
-
[解決済み】Android java.lang.IllegalStateException: Android java.lang.IllegalStateException: Could not execute method of the activity
-
[解決済み】非閉鎖文字リテラルエラー
-
[解決済み】Eclipseで「公開型 <<classname>> は独自のファイルで定義する必要があります」エラー【重複あり
-
[解決済み】文字列中の � を置換する方法
-
[解決済み】破損したjarファイル
-
[解決済み】Java LinkedListでNodesを使用する
-
[解決済み】予期しない型エラー
-
[解決済み】どういう意味か。Serializableクラスがstatic final serialVersionUIDフィールドを宣言していないとは?重複している] [重複している] [重複している] [重複している
-
[解決済み】フォルダに書き込もうとすると「java.nio.file.AccessDeniedException」が発生する件
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】リンクリストの負の値の数でnegativeCntrを代入する
-
[解決済み] hibernateでResultSetを抽出できない。
-
[解決済み】Android Studioでタスク :app:compileDebugJavaWithJavac の実行に失敗しました。
-
[解決済み】指定された子にはすでに親がいます。先に子の親に対してremoveView()を呼び出す必要がある(Android)
-
[解決済み】HTTPステータス500 サーブレットクラスのインスタンス化エラー [重複]。
-
[解決済み】Eclipseで「公開型 <<classname>> は独自のファイルで定義する必要があります」エラー【重複あり
-
[解決済み】java.io.IOException: 壊れたパイプ
-
[解決済み】破損したjarファイル
-
[解決済み] Hide Utility Class Constructor : ユーティリティクラスはパブリックまたはデフォルトコンストラクタを持つべきではありません。
-
[解決済み】接続Java - MySQL : 公開鍵の取得は許可されていません。