2015-09-01 25 views
0

我有一個使用Spring和Maven的問題。我的應用程序本身是沒有任何問題的工作,但現在我嘗試執行SpringJUnit4ClassRunner測試,它沒有編制了...initializationError(AbstractServiceTest):org.slf4j.spi.LocationAwareLogger.log(String; Throwable)

,我發現了問題:

initializationError(...) : org.slf4j.spi.LocationAwareLogger.log(String ; Throwable) 

這顯然是一個問題,我當依賴的範圍是test,但我沒有成功,看哪兒...... 這裏是我的所有依賴的列表,當我運行mvn dependencies:list

[INFO] ------------------------------------------------------------------------ 
[INFO] Building sfinx-service 0.4.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-dependency-plugin:2.8:list (default-cli) @ sfinx-service --- 
[INFO] 
[INFO] The following files have been resolved: 

[INFO] org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.0.Final:compile 
[INFO] org.hibernate:hibernate-ehcache:jar:4.1.0.Final:compile 
[INFO] displaytag:displaytag:jar:1.2:compile 
[INFO] org.springframework:spring-beans:jar:4.1.0.RELEASE:compile 
[INFO] org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:jar:1.0.0.Final:compile 
[INFO] cglib:cglib:jar:2.2.2:compile 
[INFO] org.jboss.logging:jboss-logging:jar:3.1.0.CR2:compile 
[INFO] javax.mail:mail:jar:1.4:compile 
[INFO] org.hibernate:hibernate-core:jar:4.1.0.Final:compile 
[INFO] commons-dbcp:commons-dbcp:jar:1.4:compile 
[INFO] org.aspectj:aspectjrt:jar:1.6.8:compile 
[INFO] org.springframework:spring-context-support:jar:4.1.0.RELEASE:compile 
[INFO] org.hibernate:hibernate-validator:jar:4.1.0.Final:compile 
[INFO] commons-beanutils:commons-beanutils:jar:1.7.0:compile 
[INFO] log4j:log4j:jar:1.2.17:compile 
[INFO] com.google.guava:guava:jar:11.0.2:compile 
[INFO] xml-apis:xml-apis:jar:1.0.b2:compile 
[INFO] javax.activation:activation:jar:1.1:compile 
[INFO] org.hibernate:hibernate-entitymanager:jar:4.1.0.Final:compile 
[INFO] commons-logging:commons-logging:jar:1.1.3:compile 
[INFO] org.springframework.ldap:spring-ldap-core:jar:1.3.0.RELEASE:compile 
[INFO] antlr:antlr:jar:2.7.7:compile 
[INFO] net.sourceforge.jexcelapi:jxl:jar:2.6.12:compile 
[INFO] aopalliance:aopalliance:jar:1.0:compile 
[INFO] displaytag:displaytag-export-poi:jar:1.2:compile 
[INFO] org.hibernate:hibernate-validator-annotation-processor:jar:4.1.0.Final:compile 
[INFO] org.aspectj:aspectjweaver:jar:1.6.8:compile 
[INFO] asm:asm:jar:3.3.1:compile 
[INFO] com.lowagie:itext:jar:1.3:compile 
[INFO] commons-codec:commons-codec:jar:1.5:compile 
[INFO] junit:junit:jar:4.11:test 
[INFO] org.springframework:spring-test:jar:4.1.0.RELEASE:test 
[INFO] org.slf4j:slf4j-api:jar:1.7.5:compile 
[INFO] org.springframework:spring-aop:jar:4.1.0.RELEASE:compile 
[INFO] com.mysema.querydsl:querydsl-core:jar:2.9.0:compile 
[INFO] com.google.code.findbugs:jsr305:jar:1.3.9:compile 
[INFO] com.mysema.commons:mysema-commons-lang:jar:0.2.4:compile 
[INFO] org.springframework:spring-orm:jar:4.1.0.RELEASE:compile 
[INFO] org.slf4j:jcl-over-slf4j:jar:1.7.5:compile 
[INFO] org.slf4j:jcl104-over-slf4j:jar:1.4.2:compile 
[INFO] commons-collections:commons-collections:jar:3.1:compile 
[INFO] org.springframework.security:spring-security-ldap:jar:3.0.5.RELEASE:compile 
[INFO] org.hamcrest:hamcrest-core:jar:1.3:test 
[INFO] net.sf.ehcache:ehcache-core:jar:2.6.3:compile 
[INFO] org.hibernate.common:hibernate-commons-annotations:jar:4.0.1.Final:compile 
[INFO] org.hsqldb:hsqldb:jar:2.2.8:compile 
[INFO] org.slf4j:slf4j-log4j12:jar:1.7.5:compile 
[INFO] org.apache.poi:poi:jar:3.9:compile 
[INFO] org.springframework.security:spring-security-core:jar:3.0.5.RELEASE:compile 
[INFO] org.springframework:spring-tx:jar:4.1.0.RELEASE:compile 
[INFO] dom4j:dom4j:jar:1.6.1:compile 
[INFO] org.springframework:spring-jdbc:jar:4.1.0.RELEASE:compile 
[INFO] com.oracle:ojdbc14:jar:10.2.0.3.0:compile 
[INFO] commons-pool:commons-pool:jar:1.5.4:compile 
[INFO] org.springframework:spring-core:jar:4.1.0.RELEASE:compile 
[INFO] org.springframework:spring-context:jar:4.1.0.RELEASE:compile 
[INFO] org.springframework:spring-expression:jar:4.1.0.RELEASE:compile 
[INFO] displaytag:displaytag-portlet:jar:1.2:compile 
[INFO] com.mysema.querydsl:querydsl-jpa:jar:2.9.0:compile 
[INFO] javax.validation:validation-api:jar:1.0.0.GA:compile 
[INFO] org.javassist:javassist:jar:3.15.0-GA:compile 
[INFO] commons-lang:commons-lang:jar:2.3:compile 

此處是我的pom.xml模塊:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<parent> 
    <artifactId>sfinx</artifactId> 
    <groupId>net.gdcw.sfinx</groupId> 
    <version>0.4.0-SNAPSHOT</version> 
</parent> 

<artifactId>sfinx-service</artifactId> 
<version>${project.parent.version}</version> 
<name>sfinx-service</name> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <parent.basedir>${basedir}/..</parent.basedir> 
</properties> 

<build> 
    <finalName>${final.name}</finalName> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>${maven.jar.plugin.version}</version> 
       <configuration> 
        <finalName>${project.name}-${project.version}</finalName> 
        <archive> 
         <manifestFile>${manifest.file.location}</manifestFile> 
        </archive> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

<dependencies> 

    <!-- Internal projects --> 
    <dependency> 
     <groupId>net.gdcw.sfinx</groupId> 
     <artifactId>sfinx-domain</artifactId> 
     <version>${project.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>net.gdcw.sfinx</groupId> 
     <artifactId>sfinx-dao</artifactId> 
     <version>${project.version}</version> 
    </dependency> 

    <!-- Spring core --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context-support</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 

    <!-- Ldap --> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-ldap</artifactId> 
     <version>3.0.5.RELEASE</version> 
    </dependency> 

    <!-- Hibernate --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator-annotation-processor</artifactId> 
     <version>${hibernate.version}</version> 
    </dependency> 

    <!-- Excel --> 
    <dependency> 
     <groupId>displaytag</groupId> 
     <artifactId>displaytag-export-poi</artifactId> 
     <version>1.2</version> 
    </dependency> 

    <dependency> 
     <groupId>displaytag</groupId> 
     <artifactId>displaytag-portlet</artifactId> 
     <version>1.2</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi</artifactId> 
     <version>3.9</version> 
    </dependency> 

    <dependency> 
     <groupId>net.sourceforge.jexcelapi</groupId> 
     <artifactId>jxl</artifactId> 
     <version>2.6.12</version> 
    </dependency> 

    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>${slf4j.version}</version> 
     <scope>compile</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>jcl-over-slf4j</artifactId> 
     <version>${slf4j.version}</version> 
     <scope>compile</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>${slf4j.version}</version> 
     <scope>compile</scope> 
    </dependency> 

    <dependency> 
     <groupId>javax.mail</groupId> 
     <artifactId>mail</artifactId> 
     <version>1.4</version> 
    </dependency> 


</dependencies> 

這裏是在主的pom.xml的依賴關係:

<dependencies> 

    <!-- Common dependencies --> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>${junit.version}</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test</artifactId> 
     <version>${spring.version}</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>${log4j.version}</version> 
     <scope>compile</scope> 
    </dependency> 

</dependencies> 

預先感謝您的幫助, 問候。

回答

0

事實上,使用mvn dependencies:tree對於查看問題來自何處更有用。

它來自一個事實,即有這種依賴性在我的名單:

[INFO] org.slf4j:jcl104-over-slf4j:jar:1.4.2:compile 

,因爲這是造成問題:

SLF4J 1.4.2和1.7.5版本不兼容(見compatibility report ),因爲org.slf4j.spi.LocationAwareLogger.log方法的參數列表已被改變(添加Object[] p5):

SLF4J 1.4.2:

LocationAwareLogger.log (org.slf4j.Marker p1, String p2, int p3, String p4, Throwable p5) 

SLF4J 1.7.5:對於其他SLF4J版本on this page

LocationAwareLogger.log (org.slf4j.Marker p1, String p2, int p3, String p4, Object[] p5, Throwable p6) 

見兼容性報告。

您可以通過japi-compliance-checker工具生成此類報告。


(解釋來自:Logging framework incompatibility)。

我通過添加排斥捆綁錯誤SLF4J版本的依賴性解決這個問題:

<dependency> 
     <groupId>displaytag</groupId> 
     <artifactId>displaytag-export-poi</artifactId> 
     <version>1.2</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.slf4j</groupId> 
       <artifactId>jcl104-over-slf4j</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

這樣,有slf4j之間沒有版本衝突。

相關問題