2011-03-23 2 views
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) 

чем причина?

ответ

8

Причина неправильная версия добавленной библиотеки (конфликт версий).

Проверьте версию javaadoc slf4j и попытайтесь выяснить, этот метод существует с какой версией?

1

Возможно, у вас есть класс дважды в вашем пути к классам.

Проверьте путь к классам для вхождений.

2

Если вы работаете OSX вы могли бы найти это потому, что следующие файлы включены в ява расширений:

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

/Библиотека /Java/Extensions/slf4j-log4j12-1.5.8.jar

Они загружаются загрузчиком классов расширения перед загрузкой класса приложения, поэтому сначала они будут разрешены.

Я понятия не имею, почему они там, или когда они были добавлены, но я видел только это на OSX и в прошлом году, что может означать, что они были введены в Java 6.

Вы можете удалить \ переместите файлы, чтобы решить проблему, но могут быть некоторые приложения, которые зависят от них.

+0

Spot on в моем случае! Благодаря! –