конфликты между slf4j-log4j13 и slf4j-log4j12 - PullRequest
0 голосов
/ 29 сентября 2010

У меня slf4j 1.6.1 с Log4j 1.2.16 включен в мои зависимости maven. Раньше нормально работал в предыдущих проектах. Однако недавно я начал новый проект, повторно использовав часть предыдущего кода, а затем у меня начались странные проблемы.

<dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>1.2.16</version>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.6.1</version>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.6.1</version>
</dependency>

<dependency>
  <groupId>org.apache.solr</groupId>
  <artifactId>solr-solrj</artifactId>
  <version>1.4.1</version>
</dependency>

По сути, произошло то, что каким-то образом slf4j-log4j13 также был включен в файл war, скорее всего, через некоторые переходные отношения зависимости некоторых других зависимостей. Однако, когда я использовал «mvn dependency: tree» для проверки транзитивных зависимостей, я не нашел «slf4j-log4j13».

Результат хитрый. У меня есть оба файла slf4j-log4j12 и slf4j-log4j13 в моем файле войны. Удивительно, но на моей системе Mac OSX все работало нормально. Работая нормально, я имею в виду никаких конфликтов, исключений или ошибок, вызванных этим Однако, когда я развернул его на другой 64-битной машине Linux (Ubuntu), это доставило мне неприятности. Исключение составляет следующее:

'xmlResponseParser' while setting bean property 'parser'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'xmlResponseParser' defined in ServletContext resource [/WEB-INF/spring/spring-solr.xml]: Instantiation of bean failed; nested exception is java.lang.NoSuchMethodError: org.apache.log4j.Logger.log(Ljava/lang/String;Lorg/apache/log4j/Level;Ljava/lang/Object;Ljava/lang/Throwable;)V
(Stack trace ignored)

Похоже, xmlResponseParser использует slf4j, но не может найти зависимость log4j. Это вызвано конфликтами между slf4j-log4j12 и slf4j-log413? Почему это происходит только в Linux?

Я пытался удалить одного из них; Однако удаление любого из них вызывает проблемы. Я хотел бы видеть, был ли у кого-нибудь подобный опыт.

1 Ответ

0 голосов
/ 30 сентября 2010

проблема решена. slf4j-log4j13 статически включен в webapp / WEB-INF / lib, напрямую не управляется maven.

...