我正在用JDK8编译我的类文件,其中带有-参数标志,它保留了参数名称并通过反射使它们可用。Tomcat 7似乎对我的类文件有问题。
Aug 13, 2014 8:31:32 AM org.apache.catalina.startup.ContextConfig processAnnotationsFile
SEVERE: Unable to process file [/home/rex/apache-tomcat-7.0.54/webapps/ROOT/WEB-INF/classes/mod/test/TestData.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:797)
at org.apache.tomcat.util.bcel.classfile.Attribute.readAttribute(Attribute.java:171)
at org.apache.tomcat.util.bcel.classfile.FieldOrMethod.<init>(FieldOrMethod.java:57)
at org.apache.tomcat.util.bcel.classfile.Method.<init>(Method.java:71)
at org.apache.tomcat.util.bcel.classfile.ClassParser.readMethods(ClassParser.java:267)
at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:127)
at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2058)
at org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2033)
at org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2026)
at org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2026)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1291)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:876)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:374)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
我正在使用Tomcat 7.0.54和JDK8u5 x64任何帮助将不胜感激:)
已确认在Tomcat 7.0.56中修复
请参阅Tomcat 7.0.56的更新日志http://tomcat.apache.org/tomcat-7.0-doc/changelog.html
也在本地测试了这个,它解决了我的问题
这是正确的,您必须禁用注释处理,请参阅此问题org. apache.tomcat.util.bcell.class file.ClassFormatException:常量池中的无效字节标记:15以获取更多信息。
我有同样的问题,我解决它没有升级tomcat版本如下:
>
更改ja人版本(我使用的版本是3.20.0-GA,我将其更改为3.18.1-GA)
向maven编译器插件添加一些参数
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${plugin.compiler.version}</version>
<configuration>
<source>${project.build.javaVersion}</source>
<target>${project.build.javaVersion}</target>
<forceJavacCompilerUse>true</forceJavacCompilerUse>
<fork>true</fork>
<compilerArgument>-proc:none</compilerArgument>
</configuration>
</plugin>
将标签元数据-完成="true"添加到web. xml