Tomcat ClassFormatException: Java 8 の互換性の問題の解決
Web アプリケーションを Java 7 を使用した Tomcat 7 から Java 8 を使用した Tomcat 7 にデプロイすると、まれにエラーが発生することがあります。次の例外:
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15
根本原因を理解する
Tomcat 7 は Java 8 と互換性がありますが、注釈スキャン (metadata-complete="true" web.xml) では、新しい Java 8 バイト コードを完全に処理できないバイト コード エンジニアリング ライブラリ (BCEL) の制限に起因する潜在的な問題が発生します。このため、Tomcat が注釈をスキャンしようとするとエラーが発生します。
考えられる解決策
1.注釈スキャンを無効にする (非推奨)
注釈スキャンの使用を回避できれば、すべてが正しく機能するはずです。これを無効にするには、web.xml でmetadata-complete を「false」に設定します。
2. Tomcat 7.0.53 以降に更新する (推奨)
Tomcat 7.0.53 以降、基盤となるコンパイラが更新され、Java 8 サポートが強化され、ほとんどの注釈スキャンの問題が解決されました。
3.特定の JAR をスキャンから除外する (中間解決策)
Tomcat 7.0.53 にアップグレードできないが注釈スキャンが必要な場合は、次の行を /etc/tomcat7/catalina に追加してみてください。 .properties:
junit.jar,junit-*.jar,ant-launcher.jar,\ jfxrt.jar,nashorn.jar
これにより、これらの特定の JAR の注釈のスキャンをスキップするように Tomcat に指示され、問題が解決される可能性があります。
以上がTomcat ClassFormatException: 注釈スキャンでの Java 8 互換性の問題に対処するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。