提问者:小点点

Tomcat 7注解扫描器和JDK8与参数编译器标志异常


我正在用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任何帮助将不胜感激:)


共3个答案

匿名用户

已确认在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