升级Struts2后,Tomcat引发ClassFormatException

时间:2018-09-04 19:12:22

标签: struts2 log4j tomcat7

我们将Struts2从v2.5.13升级到v2.5.17。实际上,在没有其他更改之后,Tomcat v7.0.61(运行应用程序的容器)将引发以下异常:

SEVERE: Unable to process Jar entry [module-info.class] from Jar [jar:file:/opt/apache-tomcat-2nd/webapps/portal/WEB-INF/lib/log4j-api-2.10.0.jar!/] for annotations
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19
    at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:97)
    at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:55)
    at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:177)
    at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:85)
    at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2089)
    at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1965)
    at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1931)
    at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1916)
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1330)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:889)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:386)
    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:5416)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1090)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1900)
    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:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

我尝试根据this answercatalina.properties更改为将tomcat.util.scan.DefaultJarScanner.jarsToSkip下的l​​og4j-api-2.10.0.jar包括在内,但是并没有解决问题。我知道这不会改变应用程序的行为,包括日志记录,但是我更喜欢使日志文件中没有非问题和其他虚假警报,以使异常发生时具有实际含义(又称为“不哭狼”) )。

如何消除此异常?

0 个答案:

没有答案