Java 无法启动上下文c.g.g.d.s.j.WebAppContextWithReload

Java 无法启动上下文c.g.g.d.s.j.WebAppContextWithReload,java,log4j2,embedded-jetty,Java,Log4j2,Embedded Jetty,我需要帮助解决一个我不知道如何解决的问题。非常感谢你的帮助 我刚刚将log4j2jar(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-SNA

我需要帮助解决一个我不知道如何解决的问题。非常感谢你的帮助

我刚刚将log4j2jar(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]上下文c.g.g.d.s.j的启动失败。WebAppContextWithReload@3a24f397{/,文件:/war/,开始}{\war}
多重例外[java.lang.RuntimeException:jar文件中的META-INF/versions/9/org/apache/logging/log4j/util/ProcessIdUtil.class:/war/WEB-INF/lib/log4j-api-2.10.0.jar,java.lang.RuntimeException:jar文件中的META-INF/versions/9/org/apache/logging/logging/log4j/util/StackLocator.class扫描条目META-INF/versions/9/org/apache/log4j/StackLocator.0.jar,java。lang.RuntimeException:从jar文件扫描条目module-info.class时出错:/war/WEB-INF/lib/log4j-api-2.10.0.jar]
位于org.eclipse.jetty.annotations.AnnotationConfiguration.scanForAnnotations(AnnotationConfiguration.java:536)
位于org.eclipse.jetty.annotations.AnnotationConfiguration.configure(AnnotationConfiguration.java:447)
位于org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:479)
位于org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1337)
位于org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:741)
位于org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:505)
.
.
.
原因:多重异常[java.lang.RuntimeException:从jar文件中扫描META-INF/versions/9/org/apache/logging/log4j/util/ProcessIdUtil.class:/WEB-INF/lib/log4j-api-2.10.0.jar,java.lang.RuntimeException:从jar文件中扫描META-INF/versions/9/org/apache/logging/logging/log4j/util/StackLocator.class时出错:/WEB-INF/lib/log4j-api-2.10.0.jar,java.lang.RuntimeException:从jar文件扫描条目module-info.class时出错:/WEB-INF/lib/log4j-api-2.10.0.jar]
位于org.eclipse.jetty.annotations.AnnotationParser.parseJar(AnnotationParser.java:899)
位于org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:831)
位于org.eclipse.jetty.annotations.AnnotationConfiguration$ParserTask.call(AnnotationConfiguration.java:163)
位于org.eclipse.jetty.annotations.AnnotationConfiguration$1.run(AnnotationConfiguration.java:548)
复制自(附加编辑)

这与您使用的是一个

注意这条路

META-INF/versions/9/org/apache/logging/log4j/util/ProcessIdUtil.class
META-INF/versions//*
路径前缀告诉您该路径下的类用于特定版本的Java,可能会替换顶级JAR中相同的命名类

这是首次报告和修复的地方

它是为

  • jetty-9.3.22.v20171030-2017年10月30日
  • jetty-9.4.8.v20171121-2017年11月21日
由于Jetty 9.2.x是使用寿命的终点,因此在Jetty 9.2.x上将不会有支持JEP-238的后端口

您可以选择升级到上面列出的受支持的版本之一,或者将log4j的版本降级为不使用JEP-238多版本JAR文件的版本

同样值得注意的是,您使用的log4jjep-238多版本JAR文件也是一个java9jpms模块

模块信息类的存在表明


Jetty在字节码扫描期间忽略module-info.class的支持已在

中修复,这是由于软件不兼容造成的。请参阅Eclipse Jetty问题上的响应->
META-INF/versions/9/org/apache/logging/log4j/util/ProcessIdUtil.class