2017-01-11 16 views
2

私はspring mvc 4 projetに取り組んでいます。自分のプロジェクトを実行できます。私の設定はcommons-loggingの除外を除いて使用しています。 MavenのコンパイルでLogbackのための私の設定が動作しないことを意味しているLogBackがこの場合に動作しない理由

この私の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> 
    <groupId>com.glsid.enset</groupId> 
    <artifactId>GNQST</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <properties> 
     <!-- Generic properties --> 
     <java.version>1.7</java.version> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <!-- Web --> 
     <jsp.version>2.2</jsp.version> 
     <jstl.version>1.2</jstl.version> 
     <servlet.version>2.4</servlet.version> 
     <!-- Spring --> 
     <spring-framework.version>4.2.0.RELEASE</spring-framework.version> 
     <!-- Hibernate/JPA --> 
     <hibernate.version>4.3.5.Final</hibernate.version> 
     <!-- Logging --> 
     <logback.version>1.0.13</logback.version> 
     <slf4j.version>1.7.5</slf4j.version> 
     <!-- Test --> 
     <junit.version>4.11</junit.version> 
     <!-- Jersey --> 
     <jersey.version>2.14</jersey.version> 
    </properties> 

    <dependencies> 
     <!-- ================= Debut Spring Dependencies ======================= --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${spring-framework.version}</version> 
      <exclusions> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-beans</artifactId> 
      <version>${spring-framework.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context-support</artifactId> 
      <version>${spring-framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>${spring-framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>${spring-framework.version}</version> 
     </dependency> 
     <!-- ================= Fin Spring Dependencies ======================= --> 

     <!-- ================= Other Web dependencies ======================= --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>${jstl.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>${servlet.version}</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet.jsp</groupId> 
      <artifactId>jsp-api</artifactId> 
      <version>${jsp.version}</version> 
      <scope>provided</scope> 
     </dependency> 

     <!-- ================= Fin Other Web dependencies ======================= --> 
     <!-- Logging with SLF4J & LogBack --> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>${slf4j.version}</version> 
      <scope>compile</scope> 
     </dependency> 
     <dependency> 
      <groupId>ch.qos.logback</groupId> 
      <artifactId>logback-classic</artifactId> 
      <version>${logback.version}</version> 
      <scope>runtime</scope> 
     </dependency> 
     <!-- Jersey --> 
     <dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-bundle</artifactId> 
      <version>1.1.4</version> 
     </dependency> 
     <dependency> 
      <groupId>asm</groupId> 
      <artifactId>asm</artifactId> 
      <version>3.3.1</version> 
     </dependency> 
     <!-- Hibernate --> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>${hibernate.version}</version> 
     </dependency> 


     <!-- mysql --> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.6</version> 
     </dependency> 
     <!-- https://mvnrepository.com/artifact/postgresql/postgresql --> 
     <dependency> 
      <groupId>postgresql</groupId> 
      <artifactId>postgresql</artifactId> 
      <version>9.1-901.jdbc4</version> 
     </dependency> 

     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-core</artifactId> 
      <version>2.2.1</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-databind</artifactId> 
      <version>2.2.1</version> 
      <scope>test</scope> 
     </dependency> 
     <!-- Test Artifacts --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-test</artifactId> 
      <version>${spring-framework.version}</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>${junit.version}</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.mockito</groupId> 
      <artifactId>mockito-core</artifactId> 
      <version>1.9.5</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.hamcrest</groupId> 
      <artifactId>hamcrest-all</artifactId> 
      <version>1.3</version> 
      <scope>test</scope> 
     </dependency> 


    </dependencies> 
    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-eclipse-plugin</artifactId> 
       <version>2.9</version> 
       <configuration> 
        <additionalProjectnatures> 
         <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature> 
        </additionalProjectnatures> 
        <additionalBuildcommands> 
         <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand> 
        </additionalBuildcommands> 
        <downloadSources>true</downloadSources> 
        <downloadJavadocs>true</downloadJavadocs> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.0</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
        <compilerArgument>-Xlint:all</compilerArgument> 
        <showWarnings>true</showWarnings> 
        <showDeprecation>true</showDeprecation> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.sonarsource.scanner.maven</groupId> 
       <artifactId>sonar-maven-plugin</artifactId> 
       <version>3.1.1</version> 
      </plugin> 
     </plugins> 

    </build> 

</project> 

と、この私のlogback.xmlファイル:

<?xml version="1.0" encoding="UTF-8"?> 
<!-- configuration file for LogBack (slf4J implementation) 
See here for more details: http://gordondickens.com/wordpress/2013/03/27/sawing-through-the-java-loggers/ --> 
<configuration scan="true" scanPeriod="30 seconds"> 

    <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"> 
     <resetJUL>true</resetJUL> 
    </contextListener> 

    <!-- To enable JMX Management --> 
    <jmxConfigurator/> 

    <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> 
     <encoder> 
      <pattern>%-5level %logger{0} - %msg%n</pattern> 
     </encoder> 
    </appender> 

    <logger name="com.glsid.enset" level="TRACE"/> 
    <logger name="org.hibernate.SQL" level="DEBUG" /> 
    <logger name="org.hibernate.type" level="TRACE" />--> 

    <root level="info"> 
     <appender-ref ref="console"/> 
    </root> 
</configuration> 

エラーメッセージ:

Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project GNQST: There are test failures. 

私のテスト作業を、私は私のテストでコモンズ・ログためexlusionを追加していないときに私は、リポジトリサービスは、これは私のpersistance.xmlある

エンティティマネージャのfindメソッドを呼び出すサドテスト:

<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
    version="2.0"> 

    <!-- Unite de persistance postgres --> 
    <persistence-unit name="gnst_postgres" transaction-type="RESOURCE_LOCAL"> 
     <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 
     <properties> 
      <property name="hibernate.archive.autodetection" value="class" /> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" /> 
      <property name="hibernate.connection.driver_class" value="org.postgresql.Driver" /> 
      <property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/gnqst" /> 
      <property name="hibernate.connection.username" value="gnqst" /> 
      <property name="hibernate.connection.password" value="gnqst" /> 
      <property name="hibernate.show_sql" value="true"/> 
      <property name="hibernate.flushMode" value="FLUSH_AUTO" /> 
      <property name="hibernate.hbm2ddl.auto" value="update" /> 
     </properties> 
    </persistence-unit> 

</persistence> 

誰かが問題を見つけるために私を助けることができるこのに

事前にエラーをありがとう:

Forking command line: cmd.exe /X /C ""C:\Program Files\Java\jdk1.8\jre\bin\java" -jar C:\workspace\GNQST\target\surefire\surefirebooter6162149730279091191.jar C:\workspace\GNQST\target\surefire\surefire8360206875491950166tmp C:\workspace\GNQST\target\surefire\surefire_02880392655271631294tmp" 
Running com.glsid.gnqst.controllers.TestProjetDao 
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.051 sec <<< FAILURE! 
initializationError(com.glsid.gnqst.controllers.TestProjetDao) Time elapsed: 0.007 sec <<< ERROR! 
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<clinit>(SpringJUnit4ClassRunner.java:89) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:29) 
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:21) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:250) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189) 
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165) 
    at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85) 
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115) 
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75) 
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 23 more 

答えて

3

私のテストの仕事私はあなたが何コモンズ・ロギング用

をexlusionを追加していないときに右です。

エラーの原因は表示されませんが、実行時にはSLF4JとCommons-Loggingライブラリの両方を持つべきではありません。
SLF4Jは、commons-loggingの代替品です。

あなたはSLF4含ま通り:あなたはコモンズ・ロギングを除外しなければならない

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

を。

驚くべきことに、Spring MVC 4がこのロギングAPIと結合していることは驚きです。

+0

エラーメッセージをそこに追加しました。ClassNotFoundException:org.apache.commons.logging.LogFactory –

関連する問題