I'm running into a startup problem using Tomcat 8 and Java 8 during annotation scanning.
I get many error messages similar to these two: Jun 30, 2014 12:44:26 PM org.apache.catalina.startup.ContextConfig processAnnotationsWebResource SEVERE: Unable to process web resource [/WEB-INF/classes/com/foo/printer/GPrinter.class] for annotations org.apache.tomcat.util.bcel.classfile.ClassFormatException: Expected class `CONSTANT_Utf8' at index 283 and got [7] at org.apache.tomcat.util.bcel.classfile.ConstantPool.getConstant(ConstantPool.java:207) at org.apache.tomcat.util.bcel.classfile.Attribute.readAttribute(Attribute.java:83) at org.apache.tomcat.util.bcel.classfile.FieldOrMethod.<init>(FieldOrMethod.java:76) at org.apache.tomcat.util.bcel.classfile.ClassParser.readMethods(ClassParser.java:226) at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:101) at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:1987) at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1897) at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1892) at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1892) at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1892) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1135) at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:767) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:302) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5083) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:724) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:700) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:714) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:581) at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1686) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Jun 30, 2014 12:44:26 PM org.apache.catalina.startup.ContextConfig processAnnotationsWebResource SEVERE: Unable to process web resource [/WEB-INF/classes/com/foo/printer/impl/GTile.class] for annotations java.io.EOFException at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:340) at org.apache.tomcat.util.bcel.classfile.Utility.swallowMethodParameters(Utility.java:188) at org.apache.tomcat.util.bcel.classfile.Attribute.readAttribute(Attribute.java:159) at org.apache.tomcat.util.bcel.classfile.FieldOrMethod.<init>(FieldOrMethod.java:76) at org.apache.tomcat.util.bcel.classfile.ClassParser.readMethods(ClassParser.java:226) at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:101) at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:1987) at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1897) at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1892) at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1892) at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1892) at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1892) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1135) at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:767) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:302) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5083) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:724) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:700) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:714) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:581) at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1686) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) I tried disabling annotation scanning by putting metadata-complete="true" in web.xml, but scanning is still being done. I suspect part of that is because the application is using WebSockets, so Tomcat really does need to scan for annotations like java.websocket.server.ServerEndpoint. I'm using Tomcat 8.0.9. I saw the same problem in 8.0.8 as well, but the error is NOT in 8.0.5. The Java version is 1.8.0_05 (64-bit linux build) Any help much appreciated.