ClassFormatException: Teg Bait Tidak Sah dalam Kolam Malar
Latar Belakang:
Semasa mengalihkan web aplikasi dari Tomcat 7 ke pelayan lain dengan versi Tomcat yang sama tetapi menggunakan Java 8, diperhatikan bahawa Tomcat berjaya dimulakan tetapi menghasilkan ralat dalam log catalina.out:
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15
Punca:
Ralat berpunca daripada isu dengan Bytecode Engineering Library (BCEL), yang digunakan oleh Tomcat, menghadapi kesukaran memproses kod Java 8 byte baharu.
Penyelesaian 1: Lumpuhkan Pengimbasan Anotasi
Jika pengimbasan anotasi didayakan dalam web.xml (metadata-complete="true"), melumpuhkan ia membolehkan aplikasi berjalan tanpa menghadapi ralat.
Penyelesaian 2: Kemas kini kepada Tomcat 7.0.53 atau Kemudian
Bermula dengan Tomcat 7.0.53, pengkompil telah dikemas kini dengan sokongan Java 8 yang dipertingkatkan. Kemas kini ini menyelesaikan isu untuk aplikasi yang menggunakan pengimbasan anotasi dan kod bukan Java 8.
Penyelesaian 3: Langkau Fail Balang Tertentu
Untuk situasi di mana pengimbasan anotasi diperlukan dan aplikasi menggunakan kod Java 8, tambah baris berikut pada catalina.properties:
junit.jar,junit-*.jar,ant-launcher.jar,\ jfxrt.jar,nashorn.jar
untuk melangkau fail Jar tersebut semasa pengimbasan anotasi.
Atas ialah kandungan terperinci Berikut ialah beberapa pilihan tajuk, dengan mengingati format soal jawab: Pendek dan tepat sasaran: * ClassFormatException: Teg Bait Tidak Sah dalam Kolam Malar - Mengapa dan Bagaimana untuk Membetulkannya? * Tomcat 7 an. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!