Pengecualian Teg Byte Tidak Sah dalam Tomcat 7 dengan Java 8
Apabila mengalihkan aplikasi web dari Tomcat 7 dan Java 7 ke pelayan lain yang menjalankan Tomcat 7 dan Java 8, ralat mungkin berlaku semasa permulaan:
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15
Pengecualian ini berpunca daripada BCEL, perpustakaan kejuruteraan kod bait Java yang digunakan oleh Tomcat. Khususnya, pengimbasan anotasi (dengan metadata-complete="true" dalam web.xml) boleh mencetuskan isu disebabkan ketidakupayaan BCEL untuk memproses kod Java 8 bait tertentu.
Penyelesaian:
1. Lumpuhkan Pengimbasan Anotasi:
Jika pengimbasan anotasi tidak penting, ia boleh dilumpuhkan dengan menetapkan metadata-complete="false" dalam web.xml.
2. Tomcat 7.0.53 atau Kemudian:
Tomcat 7.0.53 dan keluaran seterusnya termasuk pengkompil yang dikemas kini dengan sokongan Java 8 yang dipertingkatkan. Menaik taraf kepada versi ini sepatutnya menyelesaikan pengecualian.
3. Langkau Java 8 JARs untuk Pengimbasan Anotasi (Lanjutan):
Jika pengimbasan anotasi diperlukan dan aplikasi web bukan berasaskan Java 8, tambahkan baris berikut ke /etc/tomcat7/catalina.properties:
junit.jar,junit-*.jar,ant-launcher.jar,\jfxrt.jar,nashorn.jar
Barisan ini mengarahkan Tomcat untuk mengabaikan Java 8 JAR tertentu semasa pengimbasan anotasi.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan \'Pengecualian Teg Bait Tidak Sah\' dalam Tomcat 7 apabila Menaik taraf ke Java 8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!