Heim  >  Artikel  >  Java  >  Warum erhalte ich in Tomcat 7 mit Java 8 die Ausnahme „Ungültiges Byte-Tag im Konstantenpool: 15“?

Warum erhalte ich in Tomcat 7 mit Java 8 die Ausnahme „Ungültiges Byte-Tag im Konstantenpool: 15“?

Linda Hamilton
Linda HamiltonOriginal
2024-10-27 08:40:03930Durchsuche

Why am I Getting

Ausnahme „Ungültiges Byte-Tag im Konstantenpool: 15“ in Tomcat 7 mit Java 8

Tomcat 7 ist offiziell mit Java 8 kompatibel. Bei der Migration einer Webanwendung von Tomcat 7 mit Java 6 auf einen anderen Tomcat 7-Server mit Java 8 können Benutzer jedoch auf die folgende Ausnahme stoßen:

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

Mögliche Ursachen

Diese Ausnahme tritt aufgrund von BCEL-Problemen (Byte Code Engineering Library) in Tomcat 7 mit Java 8 auf. BCEL stößt auf Schwierigkeiten bei der Verarbeitung der neuen Java 8-Bytecodes, insbesondere wenn das Scannen von Annotationen aktiviert ist (metadata-complete="true" in web.xml). ).

Lösungen

Kein Scannen von Anmerkungen:

Wenn das Scannen von Anmerkungen nicht verwendet wird, kann das Problem durch gelöst werden Aktualisierung von Tomcat 7 auf Version 7.0.53 oder höher, die einen aktualisierten Compiler mit verbesserter Java 8-Unterstützung enthält.

Anmerkungsscannen:

Wenn das Annotationsscannen aktiviert ist, dort Es gibt zwei Alternativen:

  • Problembibliotheken ausschließen: Fügen Sie die folgende Zeile zu /etc/tomcat7/catalina.properties hinzu:
junit.jar,junit-*.jar,ant-launcher.jar,\
jfxrt.jar,nashorn.jar

This weist Tomcat an, das Scannen der angegebenen Bibliotheken zu überspringen.

  • Scannen von Anmerkungen deaktivieren: Entfernen Sie „metadata-complete="true" aus web.xml, um das Scannen von Anmerkungen zu deaktivieren.

Zusätzliche Hinweise:

  • Dieses spezielle Problem trat mit Tomcat 7.0.28 unter Debian 7.6 mit Oracle JDK 8_25 auf.
  • Der „offizielle Antwort“, dass Tomcat 7 mit Java 8 kompatibel ist, bleibt gültig. Allerdings können BCEL-Probleme auftreten, wenn das Scannen von Anmerkungen aktiviert ist.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich in Tomcat 7 mit Java 8 die Ausnahme „Ungültiges Byte-Tag im Konstantenpool: 15“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn