Rumah  >  Artikel  >  Java  >  \"Teg Bait Tidak Sah dalam Kolam Malar: 15\" - Mengapa Tomcat 7 Membuang Ralat Ini Apabila Berjalan pada Java 8?

\"Teg Bait Tidak Sah dalam Kolam Malar: 15\" - Mengapa Tomcat 7 Membuang Ralat Ini Apabila Berjalan pada Java 8?

Linda Hamilton
Linda Hamiltonasal
2024-11-04 13:07:301024semak imbas

Teg Byte Tidak Sah dalam Kolam Malar: Isu Tomcat dengan Java 8

Menghadapi ralat "Teg bait tidak sah dalam kumpulan malar: 15" apabila cuba memindahkan aplikasi web dari Tomcat 7 ke pelayan lain yang menjalankan Tomcat 7 dengan Java 8? Artikel ini menyelami isu ini dan menawarkan penyelesaian.

Penerangan Isu:

Setelah memulakan Tomcat, aplikasi mungkin menghadapi ralat seperti yang dilihat dalam log catalina.out:

org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15

Punca Berkemungkinan:

Ralat timbul kerana Java 8 memperkenalkan kod bait baharu yang BCEL, perpustakaan penghuraian kelas yang digunakan oleh Tomcat 7, mungkin tidak dapat memproses dengan berkesan.

Penyelesaian:

Penyelesaian Rasmi:

Menurut dokumentasi Tomcat, menjalankan Tomcat 7 di Java 8 sepatutnya berfungsi dengan baik.

Isu Pengimbasan Anotasi:

Walau bagaimanapun, jika pengimbasan anotasi didayakan dalam fail web.xml aplikasi web, isu mungkin timbul disebabkan ketidakupayaan BCEL untuk mengendalikan kod Java 8 bait. Dalam kes sedemikian, pengecualian seperti di bawah mungkin muncul:

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

Penyelesaian untuk Pengimbasan Anotasi:

  1. Lumpuhkan Pengimbasan Anotasi: Elakkan mendayakan pengimbasan anotasi (tetapkan metadata-complete="true" kepada palsu dalam web.xml). Ini membolehkan Tomcat 7 berfungsi dengan normal. Walau bagaimanapun, penyelesaian ini melumpuhkan pengimbasan anotasi dalam apl web.
  2. Kemas kini Tomcat: Naik taraf kepada Tomcat 7.0.53 atau lebih baru, yang termasuk pengkompil yang dikemas kini untuk menyokong Java 8 dengan lebih baik.
  3. Kecualikan Balang Bermasalah: Jika pengimbasan anotasi mesti digunakan dan kod anda bukan berasaskan Java 8, tambahkan baris berikut ke /etc/tomcat7/catalina.properties:
junit.jar,junit-*.jar,ant-launcher.jar,\
jfxrt.jar,nashorn.jar

Pengubahsuaian ini memastikan Tomcat melangkau balang yang bermasalah semasa pengimbasan anotasi.

Atas ialah kandungan terperinci \"Teg Bait Tidak Sah dalam Kolam Malar: 15\" - Mengapa Tomcat 7 Membuang Ralat Ini Apabila Berjalan pada Java 8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn