ClassFormatException: Ungültiges Byte-Tag im Konstantenpool
Hintergrund:
Während der Portierung eines Webs Anwendung von Tomcat 7 auf einen anderen Server mit derselben Tomcat-Version, aber unter Verwendung von Java 8, wurde beobachtet, dass Tomcat erfolgreich gestartet wurde, aber einen Fehler im catalina.out-Protokoll erzeugte:
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15
Ursache:
Der Fehler ist auf ein Problem mit der Bytecode Engineering Library (BCEL) zurückzuführen, die von Tomcat verwendet wird und bei der Verarbeitung der neuen Java 8-Bytecodes auf Schwierigkeiten stößt.
Lösung 1: Deaktivieren Scannen von Anmerkungen
Wenn das Scannen von Anmerkungen in web.xml aktiviert ist (metadata-complete="true"), kann die Anwendung durch Deaktivieren ausgeführt werden, ohne dass der Fehler auftritt.
Lösung 2: Update auf Tomcat 7.0.53 oder höher
Ab Tomcat 7.0.53 wurde der Compiler mit verbesserter Java 8-Unterstützung aktualisiert. Dieses Update behebt das Problem für Anwendungen, die das Scannen von Anmerkungen und Nicht-Java-8-Code verwenden.
Lösung 3: Bestimmte Jar-Dateien überspringen
Für Situationen, in denen das Scannen von Anmerkungen erforderlich ist und Da die Anwendung Java 8-Code verwendet, fügen Sie die folgende Zeile zu catalina.properties hinzu:
junit.jar,junit-*.jar,ant-launcher.jar,\ jfxrt.jar,nashorn.jar
um diese Jar-Dateien beim Scannen von Annotationen zu überspringen.
Das obige ist der detaillierte Inhalt vonHier sind einige Titeloptionen unter Berücksichtigung des Frage-und-Antwort-Formats: Kurz und bündig: * ClassFormatException: Ungültiges Byte-Tag im Konstantenpool – Warum und wie kann es behoben werden? * Tomcat 7 an. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!