7

Spring框架抛出

Exception in thread "main" java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V
    at org.apache.commons.logging.impl.SLF4JLocationAwareLog.info(SLF4JLocationAwareLog.java:159)
    at org.springframework.context.support.AbstractApplicationContext.prepareRefresh(AbstractApplicationContext.java:454)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:392)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)

什么原因?

4

3 回答 3

8

原因是添加的库版本错误(版本冲突)。

检查slf4jjavadoc 的版本并尝试找出该方法存在于哪个版本?

于 2011-03-23T10:07:10.483 回答
2

如果您正在运行 OSX,您可能会发现这是因为以下文件作为 java 扩展名包含在内:

/Library/Java/Extensions/slf4j-api-1.5.8.jar

/Library/Java/Extensions/slf4j-log4j12-1.5.8.jar

这些是由扩展类加载器在您的应用程序类加载器之前加载的,因此将首先解决这些问题。

我不知道为什么这些存在或何时添加,但我只在 OSX 和去年看到过,这可能意味着它们是在 java 6 中引入的。

您可以删除\移动文件来解决问题,但可能有一些应用程序依赖于它们。

于 2011-04-14T17:16:07.280 回答
1

您的类路径中可能有两次课程。

检查出现的类路径。

于 2011-03-23T10:20:12.650 回答