2013-11-29 3 views
1

В моем проекте, я использую:зависимости Logger в Maven проекта

<dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.7.2</version> 
    </dependency> 

Я не могу удалить его, потому что много других зависимостей использовать его. App работает с LDAP, так ecently я есть добавить:

<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

ответ

3

Вы могли:

  • обновить версию до 1.5.7, которая является последней 1.x версии. Это зависит от slf4j-log4j12:1.5.10, так что это вряд ли поможет.
  • Рассмотрите возможность использования apacheds-all:2.0.0-M15. Это зависит от slf4j-log4j12:1.7.5, поэтому, если эта версия подходит вам, она должна решить эту проблему.

UPDATE

Некоторые другие идеи:

  • Отделить ApacheDS с весны
  • или отключить ведение журнала для проблемных пакетов, которые используют старый 1.5.x мост
  • и удаление этот мост (за исключением зависимости) и (необязательно) добавить конфигурацию log4j, чтобы увидеть log4j logs (никогда не пробовал их обоих!).
+0

Спасибо, Андрей. Комментарий ко второй части: Я не могу использовать новую версию apache-ds, потому что использую (apache-ds) с scring. http://docs.spring.io/spring-security/site/docs/3.1.4.RELEASE/reference/appendix-dependencies.html. Spring может работать только с 1.5.5 :( –

+0

Некоторые другие идеи: отделите это от Spring или отключите ведение журнала проблемных пакетов, которые используют старый мост «1.5.x» ИЛИ удаляют этот мост (исключая зависимость) и (необязательно) добавьте конфигурацию log4j, чтобы увидеть журналы log4j (никогда не пробовал их обоих!). –

1

Maven должен наводиться последнюю версию, но вы можете попробовать добавить раздел управления зависимостями, явно указать, какую версию SLF4J вы хотите. Вероятно, выбор последней версии из всех ваших зависимостей будет в порядке (1.7.2 в этом случае).

В качестве альтернативы я столкнулся с этой проблемой при развертывании приложения в jboss, поскольку он связывает старую версию slf4j, которая имеет приоритет над версией в моем приложении. Вы можете проверить это, запустив приложение (или jboss или что-то еще) с параметром jvm -verbose:class, он выйдет из системы, из которого загружается каждый класс. Это скажет вам, загружается ли оно из банки в вашем приложении или что-то в вашей среде.

Смежные вопросы