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)
是什么原因?
答案 0 :(得分:8)
原因是添加了错误的库版本(版本冲突)。
检查slf4j
的javadoc版本并尝试弄清楚,此方法与哪个版本存在?
答案 1 :(得分:2)
如果您正在运行OSX,您可能会发现这是因为以下文件包含在Java扩展中:
/Library/Java/Extensions/slf4j-api-1.5.8.jar
/Library/Java/Extensions/slf4j-log4j12-1.5.8.jar
扩展类加载器在应用程序类加载器之前加载它们,因此首先解析它们。
我不知道为什么会有这些或者它们被添加但是我在OSX和去年才看到这个,这可能意味着它们是在java 6中引入的。
您可以删除\移动文件以解决问题,但可能有一些应用程序依赖于它们。
答案 2 :(得分:1)
您可能在类路径中有两次类。
检查事件的类路径。