Ungültiges Byte-Tag im Konstantenpool: Ein Tomcat-Problem mit Java 8
Es tritt der Fehler „Ungültiges Byte-Tag im Konstantenpool: 15“ auf beim Versuch, eine Webanwendung von Tomcat 7 auf einen anderen Server zu portieren, auf dem Tomcat 7 mit Java 8 ausgeführt wird? Dieser Artikel befasst sich mit dem Problem und bietet Lösungen.
Problembeschreibung:
Beim Starten von Tomcat kann die Anwendung auf einen Fehler stoßen, wie im Protokoll catalina.out zu sehen ist:
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15
Mögliche Ursache:
Der Fehler tritt auf, weil Java 8 neue Bytecodes einführt, die BCEL, die von Tomcat 7 verwendete Klassenanalysebibliothek, möglicherweise nicht enthält in der Lage, effektiv zu verarbeiten.
Lösung:
Offizielle Lösung:
Laut Tomcat-Dokumentation wird Tomcat 7 auf Java ausgeführt 8 sollte einwandfrei funktionieren.
Problem beim Scannen von Anmerkungen:
Wenn jedoch das Scannen von Anmerkungen in der web.xml-Datei der Webanwendung aktiviert ist, können aufgrund der Unfähigkeit von BCEL Probleme auftreten um Java 8-Byte-Codes zu verarbeiten. In solchen Fällen können Ausnahmen wie die folgende auftreten:
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
Lösungen für das Scannen von Anmerkungen:
junit.jar,junit-*.jar,ant-launcher.jar,\ jfxrt.jar,nashorn.jar
Diese Änderung stellt sicher, dass Tomcat problematische Gläser beim Scannen von Annotationen überspringt.
Das obige ist der detaillierte Inhalt von„Ungültiges Byte-Tag im Konstantenpool: 15' – Warum gibt Tomcat 7 diesen Fehler aus, wenn es unter Java 8 ausgeführt wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!