我有slf4j 1.6.1和Log4j 1.2.16包含在我的maven dependencies中。它曾經在以前的項目中工作得很好。然而,最近我通過重用以前的代碼庫開始了一個新項目,然後開始出現一些奇怪的問題。slf4j-log4j13和slf4j-log4j12之間的衝突
<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也被納入了戰爭的文件,很可能將向您介紹一些其他依賴的一些傳遞依賴關係。但是,當我使用「mvn dependency:tree」來檢查傳遞依賴性時,我沒有找到「slf4j-log4j13」。
結果很棘手。我的戰爭文件中有slf4j-log4j12和slf4j-log4j13。令人驚訝的是,它在我的Mac OSX系統上運行良好,不知何故。通過正常工作,我的意思是沒有任何衝突,例外或錯誤造成的。但是,當我將它部署到另一臺Linux(Ubuntu)64位機器時,它給我帶來了麻煩。唯一的例外是如下,
'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上?
我試圖刪除其中的一個;但是,刪除其中任何一個都會導致問題。我想看看有沒有人有類似的經歷。