我需要一个问题的帮助我不知道如何解决。非常感谢您的帮助。
我刚刚将log4j2 jars(log4j-api-2.10.0.jar,log4j-core-2.10.0.jar)添加到我的Web应用程序中,它开始在我的开发中遇到此问题。后来我添加了log4j-web-2.10.0.jar并尝试了,它仍然失败并显示相同的消息。
这是我的环境:
IDE: Eclipse Oxygen2
JDK: 1.8.0_162
Jetty (embedded in Eclipse): jetty-9.2.z-SNAPSHOT
OS: Win 10 (64bit)
Framework: GWT 2.8.2
堆栈跟踪(部分):
[WARN] Failed startup of context c.g.g.d.s.j.WebAppContextWithReload@3a24f397{/,file:<project_path>/war/,STARTING}{<project_path>\war}
MultiException[java.lang.RuntimeException: Error scanning entry META-INF/versions/9/org/apache/logging/log4j/util/ProcessIdUtil.class from jar file:<project_path>/war/WEB-INF/lib/log4j-api-2.10.0.jar, java.lang.RuntimeException: Error scanning entry META-INF/versions/9/org/apache/logging/log4j/util/StackLocator.class from jar file:<project_path>/war/WEB-INF/lib/log4j-api-2.10.0.jar, java.lang.RuntimeException: Error scanning entry module-info.class from jar file:<project_path>/war/WEB-INF/lib/log4j-api-2.10.0.jar]
at org.eclipse.jetty.annotations.AnnotationConfiguration.scanForAnnotations(AnnotationConfiguration.java:536)
at org.eclipse.jetty.annotations.AnnotationConfiguration.configure(AnnotationConfiguration.java:447)
at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:479)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1337)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:741)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:505)
.
.
.
Caused by: MultiException[java.lang.RuntimeException: Error scanning entry META-INF/versions/9/org/apache/logging/log4j/util/ProcessIdUtil.class from jar file:<project_path>/WEB-INF/lib/log4j-api-2.10.0.jar, java.lang.RuntimeException: Error scanning entry META-INF/versions/9/org/apache/logging/log4j/util/StackLocator.class from jar file:<project_path>/WEB-INF/lib/log4j-api-2.10.0.jar, java.lang.RuntimeException: Error scanning entry module-info.class from jar file:<project_path>/WEB-INF/lib/log4j-api-2.10.0.jar]
at org.eclipse.jetty.annotations.AnnotationParser.parseJar(AnnotationParser.java:899)
at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:831)
at org.eclipse.jetty.annotations.AnnotationConfiguration$ParserTask.call(AnnotationConfiguration.java:163)
at org.eclipse.jetty.annotations.AnnotationConfiguration$1.run(AnnotationConfiguration.java:548)
答案 0 :(得分:2)
从https://github.com/eclipse/jetty.project/issues/2192复制,(附加编辑)
这与您使用JEP-238 Multi-Release JAR。
有关注意路径..
META-INF/versions/9/org/apache/logging/log4j/util/ProcessIdUtil.class
META-INF/versions/<java.specification.version>/*
路径前缀告诉您该路径下面的类是针对该特定版本的Java,可能会替换顶级JAR中相同的命名类。
Issue #1797是首次报告和修复的地方。
它被修复为......
由于Jetty 9.2.x已经过期,因此Jetty 9.2.x上没有支持JEP-238的backport。
您的选择是升级到上面列出的受支持版本之一,或者将您的log4j版本降级为不使用JEP-238多版本JAR文件的版本。
另外值得注意的是,您使用的log4j JEP-238 Multi-Release JAR文件也是Java 9 JPMS模块。
状态module-info.class
表示。