ClassFormatException: Invalid Byte Tag in Constant Pool
Background:
While porting a web application from Tomcat 7 to another server with the same Tomcat version but using Java 8, it was observed that Tomcat started successfully but produced an error in the catalina.out log:
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15
Cause:
The error originates from an issue with the Bytecode Engineering Library (BCEL), used by Tomcat, encountering difficulties processing the new Java 8 byte codes.
Solution 1: Disable Annotation Scanning
If annotation scanning is enabled in web.xml (metadata-complete="true"), disabling it allows the application to run without encountering the error.
Solution 2: Update to Tomcat 7.0.53 or Later
Starting with Tomcat 7.0.53, the compiler has been updated with improved Java 8 support. This update resolves the issue for applications using annotation scanning and non-Java 8 code.
Solution 3: Skip Certain Jar Files
For situations where annotation scanning is required and the application utilizes Java 8 code, add the following line to catalina.properties:
junit.jar,junit-*.jar,ant-launcher.jar,\ jfxrt.jar,nashorn.jar
to skip those Jar files during annotation scanning.
The above is the detailed content of Here are a few title options, keeping in mind the question-and-answer format: Short and to the point: * ClassFormatException: Invalid Byte Tag in Constant Pool - Why and How to Fix it? * Tomcat 7 an. For more information, please follow other related articles on the PHP Chinese website!