我在我的java项目的pom.xml中使用这些log4j,slf4j和ch.qos.logback依赖项:
<data name=\\"(.+)\\" xml:space=\\"preserve\\">
我最近想使用外部servlet库并在pom中定义该依赖项。这个servlet的init方法如下所示:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
当我启动服务器时,我的Weblogic Server向init方法显示了这个异常:
java.lang.NoSuchMethodError: 组织/阿帕奇/ log4j的/ Logger.setLevel(Lorg /阿帕奇/ log4j的/电平;)V
当我在eclipse中打开HealthpageServlet jar内容时,它在WEB-INF / lib文件夹中有一个log4j-1.2.15 jar。但即使我从pom.xml中排除了该依赖项,我也看到了这个异常并且我的服务器无法启动。有什么问题?
答案 0 :(得分:1)
由于我的外部jar的log4j版本(1.2.15)与我的父项目的slf4j版本(1.6.4)不兼容(其中logger.setLevel()不可用),我不得不将我的slf4j更新为版本1.7.7。
答案 1 :(得分:0)
我知道答案为时已晚,但添加此答案可能会对他人有所帮助。 就我而言,通过尝试不同的配置,我得出结论说log4j和slf4j要成功运行,我们需要找出版本匹配。 spring-mvc与以上两个依赖项之间的版本不匹配将导致上述错误。因此,请尝试找出3个依赖项之间的正确版本匹配。我尝试使用以下依赖项来完成工作。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j13</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>