Invalid Byte Tag in Constant Pool: A Tomcat Issue with Java 8
Encountering an "Invalid byte tag in constant pool: 15" error when attempting to port a webapp from Tomcat 7 to another server running Tomcat 7 with Java 8? This article dives into the issue and offers solutions.
Issue Description:
Upon starting Tomcat, the application may encounter an error as seen in the log catalina.out:
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15
Possible Cause:
The error arises due to Java 8 introducing new byte codes that BCEL, the class parsing library used by Tomcat 7, may not be able to process effectively.
Solution:
Official Solution:
According to Tomcat documentation, running Tomcat 7 on Java 8 should work fine.
Annotation Scanning Issue:
However, if annotation scanning is enabled in the web application's web.xml file, issues may surface due to BCEL's inability to handle Java 8 byte codes. In such cases, exceptions like the one below may appear:
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
Solutions for Annotation Scanning:
junit.jar,junit-*.jar,ant-launcher.jar,\ jfxrt.jar,nashorn.jar
This modification ensures that Tomcat skips problematic jars during annotation scanning.
The above is the detailed content of \"Invalid Byte Tag in Constant Pool: 15\" - Why Does Tomcat 7 Throw This Error When Running on Java 8?. For more information, please follow other related articles on the PHP Chinese website!