ClassFormatException: 定数プール内のバイト タグが無効です
背景:
Web の移植中Tomcat 7 から、同じ Tomcat バージョンで Java 8 を使用する別のサーバーにアプリケーションを送信すると、Tomcat は正常に起動しましたが、catalina.out ログにエラーが生成されたことが観察されました:
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15
原因:
このエラーは、Tomcat で使用されるバイトコード エンジニアリング ライブラリ (BCEL) の問題が原因で、新しい Java 8 バイト コードの処理で問題が発生したことが原因です。
解決策 1: 無効にする注釈スキャン
web.xml で注釈スキャンが有効になっている場合 (metadata-complete="true")、それを無効にすると、エラーが発生することなくアプリケーションを実行できるようになります。
解決策 2: Tomcat 7.0.53 以降に更新する
Tomcat 7.0.53 以降、コンパイラは更新され、Java 8 サポートが強化されました。この更新により、注釈スキャンと非 Java 8 コードを使用するアプリケーションの問題が解決されました。
解決策 3: 特定の Jar ファイルをスキップする
注釈スキャンが必要な状況と、アプリケーションは Java 8 コードを利用しており、次の行を catalina.properties に追加します:
junit.jar,junit-*.jar,ant-launcher.jar,\ jfxrt.jar,nashorn.jar
注釈スキャン中にこれらの Jar ファイルをスキップします。
以上が質疑応答形式を念頭に置いて、タイトルのオプションをいくつか示します。 短く要点をまとめたもの: * ClassFormatException: 定数プール内のバイト タグが無効です - その理由と修正方法 *トムキャット7の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。