定数プール内のバイト タグが無効です: Java 8 での Tomcat の問題
「定数プール内のバイト タグが無効です: 15」エラーが発生しましたTomcat 7 から Java 8 を搭載した Tomcat 7 を実行している別のサーバーに Web アプリを移植しようとするとどうなりますか?この記事では、この問題について詳しく説明し、解決策を示します。
問題の説明:
Tomcat を起動すると、ログ catalina.out に示されているように、アプリケーションでエラーが発生する場合があります。
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15
考えられる原因:
Java 8 で導入された新しいバイト コードが原因でエラーが発生しますが、Tomcat 7 で使用されるクラス解析ライブラリである BCEL では使用できない可能性があります。
解決策:
公式解決策:
Tomcat のドキュメントによると、Java 上で Tomcat 7 を実行しています。 8 は正常に動作するはずです。
注釈スキャンの問題:
ただし、Web アプリケーションの web.xml ファイルで注釈スキャンが有効になっている場合、BCEL の機能不全により問題が表面化する可能性があります。 Java 8 バイト コードを処理します。そのような場合、以下のような例外が表示されることがあります:
SEVERE: Unable to process Jar entry [jdk/nashorn/internal/objects/NativeString.class] from Jar [jar:file:/usr/lib/jvm/jdk1.8.0_5/jre/lib/ext/nashorn.jar!/] for annotations org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15
注釈スキャンの解決策:
junit.jar,junit-*.jar,ant-launcher.jar,\ jfxrt.jar,nashorn.jar
この変更により、Tomcat は注釈スキャン中に問題のある jar をスキップします。
以上が「定数プール内のバイト タグが無効です: 15」 - Java 8 で実行すると Tomcat 7 がこのエラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。