Tomcat генерирует ClassFormatException после обновления Struts2 - PullRequest
0 голосов
/ 04 сентября 2018

Мы обновили Struts2 с версии 2.5.13 до версии 2.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)

Я попытался изменить catalina.properties, чтобы включить log4j-api-2.10.0.jar в tomcat.util.scan.DefaultJarScanner.jarsToSkip, согласно этому ответу , но это не решило проблему , Я понимаю, что это не меняет поведение приложения, включая ведение журналов, но я предпочитаю не допускать ошибок в файле журнала и других ложных тревог, чтобы придать фактическое значение исключениям, когда они происходят (AKA "не плачущий волк") ).

Как я могу устранить это исключение?

...