我正在尝试将 Jetty 服务器嵌入到我的自动化测试中,因此我在我的项目中添加了以下依赖项:
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<version>7.6.13.v20130916</version>
<scope>test</scope>
</dependency>
我正在使用 Jetty 7,因为 Web 应用程序使用 Java 6、Servlet 2.5。
但是,当我尝试启动嵌入式 Jetty 服务器时,我得到:
java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V
at org.eclipse.jetty.util.log.JettyAwareLogger.log(JettyAwareLogger.java:607)
at org.eclipse.jetty.util.log.JettyAwareLogger.warn(JettyAwareLogger.java:431)
at org.eclipse.jetty.util.log.Slf4jLog.warn(Slf4jLog.java:69)
at org.eclipse.jetty.util.component.AbstractLifeCycle.setFailed(AbstractLifeCycle.java:204)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:74)
我一直试图找出问题所在,但到目前为止我采取的任何步骤都没有解决这个问题。以下是我到目前为止所做的列表:
- 跟踪传递依赖以搜索不兼容的版本
slf4j-api
- 尝试不同版本的
slf4j-api
(1.5.11, 1.6.1, 1.6.4, 1.7.5) - 查看了 Jetty 7 的一些来源,特别是 pom.xml,发现对 slf4j 1.6.1 有依赖关系
- 研究了这个类似的问题并
null
在尝试打印时得到了org.slf4j.spi.LocationAwareLogger
,并且org.slf4j.Marker
我希望有人可以对这个问题提供新的见解。谢谢。