Ungültige Byte-Tag-Ausnahme in Tomcat 7 mit Java 8
Beim Portieren einer Webanwendung von Tomcat 7 und Java 7 auf einen anderen Server, auf dem Tomcat ausgeführt wird 7 und Java 8 kann beim Start ein Fehler auftreten:
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15
Diese Ausnahme stammt von BCEL, der von Tomcat verwendeten Java-Bytecode-Engineering-Bibliothek. Insbesondere das Scannen von Anmerkungen (mit metadata-complete="true" in web.xml) kann Probleme auslösen, da BCEL bestimmte Java 8-Byte-Codes nicht verarbeiten kann.
Lösungen:
1. Anmerkungsscan deaktivieren:
Wenn das Anmerkungsscannen nicht unbedingt erforderlich ist, kann es durch Festlegen von metadata-complete="false" in web.xml deaktiviert werden.
2. Tomcat 7.0.53 oder höher:
Tomcat 7.0.53 und nachfolgende Versionen enthalten einen aktualisierten Compiler mit verbesserter Java 8-Unterstützung. Durch ein Upgrade auf diese Versionen sollte die Ausnahme behoben werden.
3. Überspringen Sie Java 8-JARs für das Scannen von Anmerkungen (erweitert):
Wenn das Scannen von Anmerkungen erforderlich ist und die Webanwendung nicht auf Java 8 basiert, fügen Sie die folgende Zeile zu /etc/tomcat7/catalina.properties hinzu:
junit.jar,junit-*.jar,ant-launcher.jar,\jfxrt.jar,nashorn.jar
Diese Zeile weist Tomcat an, bestimmte Java 8-JARs während des Annotationsscans zu ignorieren.
Das obige ist der detaillierte Inhalt vonWie behebt man die „Ungültige Byte-Tag-Ausnahme' in Tomcat 7 beim Upgrade auf Java 8?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!