在我的项目中,我正在使用:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.2</version>
</dependency>
我无法删除它,因为很多其他依赖项都使用它。 应用程序正在使用LDAP,所以我最近添加了:
<dependency>
<groupId>org.apache.directory.server</groupId>
<artifactId>apacheds-all</artifactId>
<version>1.5.5</version>
</dependency>
这取决于:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.2</version>
</dependency>
现在我有很多错误:
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.apache.commons.logging.impl.SLF4JLocationAwareLog.error(SLF4JLocationAwareLog.java:225)
你能帮帮我吗?
Yep, I see this question
答案 0 :(得分:3)
你可以:
1.5.7
,这是最新的1.x
版本。这取决于slf4j-log4j12:1.5.10
,所以这不太可能会有所帮助。apacheds-all:2.0.0-M15
。这取决于slf4j-log4j12:1.7.5
所以如果这个版本适合你,它应该解决这个问题。<强>更新强>
其他一些想法:
答案 1 :(得分:1)
Maven 应选择最新版本,但您可以尝试添加依赖关系管理部分,以明确指定您想要的slf4j版本。可能会从所有各种依赖项中选择最新版本(在这种情况下为1.7.2)。
或者,我在将应用程序部署到jboss时遇到了这个问题,因为它捆绑了旧版本的slf4j,它优先于我的应用程序中的版本。您可以通过使用-verbose:class
jvm参数运行应用程序(或jboss或其他)来检查这一点,它将注销每个类的加载位置。这将告诉您它是从应用程序中的jar加载,还是在您的环境中加载。