Bug 53735 - Update annotation scanning to be compatible with Java 7 class files
Summary: Update annotation scanning to be compatible with Java 7 class files
Status: RESOLVED FIXED
Alias: None
Product: Tomcat 8
Classification: Unclassified
Component: Catalina (show other bugs)
Version: 8.0.x-trunk
Hardware: PC Windows XP
: P2 normal (vote)
Target Milestone: ----
Assignee: Tomcat Developers Mailing List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-08-17 20:42 UTC by Konstantin Kolinko
Modified: 2012-08-26 22:26 UTC (History)
0 users



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Konstantin Kolinko 2012-08-17 20:42:29 UTC
As was reported on the users mailing list, the annotation scanning code may fail when trying to scan a class compiled for Java 7. The thread:

"Tomcat 7.0.29 vs. Groovy with Java 7"
http://tomcat.markmail.org/thread/4y7jfmznleqdczwh

As said there, "It appears that when one installs the groovy-all-2.0.1-indy.jar in a Tomcat web app, BCEL chokes on the Java 7 specific byte-code therein ala"
[[[
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag
in constant pool: 15 at
org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:131) at
org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:60) at
org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:209) at
org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:119) at
org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2066)
]]]

If the problem is with specific libraries (like Groovy 2.0), it is possible to disable annotation scanning for them (see the thread above).

In general, though, as Tomcat 8 targets Java 7, it should be able to scan such files.
Comment 1 Mark Thomas 2012-08-26 22:26:49 UTC
Fixed in trunk and 7.0.x and will be included in 7.0.30 onwards.