2017-04-19 323 views
2

我試圖deeplearning4j與JHipster pom.xml中集成了以下內容:整合deeplearning4j與JHipster的Maven的pom.xml,越來越SLF4J綁定錯誤

<dependency> 
     <groupId>org.deeplearning4j</groupId> 
     <artifactId>deeplearning4j-core</artifactId> 
     <version>0.8.0</version> 
     <exclusions> 
      <exclusion> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      </exclusion> 
      <exclusion> 
      <groupId>org.slf4j</groupId> 
      <artifactId>log4j-over-slf4j</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-api</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>ch.qos.logback</groupId> 
       <artifactId>logback-core</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>ch.qos.logback</groupId> 
       <artifactId>logback-classic</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>ch.qos.logback</groupId> 
       <artifactId>logback-access</artifactId> 
      </exclusion> 
    </exclusions> 
</dependency> 

,我收到以下錯誤,而我運行\ mvnw:

SLF4J: Class path contains multiple SLF4J bindings. 
SLF4J: Found binding in [jar:file:/C:/Users/william/.m2/repository  /org/slf4j/slf4j-nop/1.7.6/slf4j-nop-1.7.6.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [jar:file:/C:/Users/william/.m2/repository/ch/qos/logback/logback-classic/1.1.7/logback-classic-1.1.7.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
SLF4J: Actual binding is of type [org.slf4j.helpers.NOPLoggerFactory] 
[WARNING] 
java.lang.reflect.InvocationTargetException 
    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:497) 
    at org.springframework.boot.maven.AbstractRunMojo$LaunchRunner.run(AbstractRunMojo.java:478) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.helpers.NOPLoggerFactory loaded from file:/C:/Users/william/.m2/repository/org/slf4j/slf4j-api/1.7.21/slf4j-api-1.7.21.jar). If you are using WebLogic you will need to add 'org.slf4j' to prefer-application-packages in WEB-INF/weblogic.xml Object of class [org.slf4j.helpers.NOPLoggerFactory] must be an instance of class ch.qos.logback.classic.LoggerContext 
    at org.springframework.util.Assert.isInstanceOf(Assert.java:346) 
    at org.springframework.boot.logging.logback.LogbackLoggingSystem.getLoggerContext(LogbackLoggingSystem.java:221) 
    at org.springframework.boot.logging.logback.LogbackLoggingSystem.getLogger(LogbackLoggingSystem.java:213) 
    at org.springframework.boot.logging.logback.LogbackLoggingSystem.beforeInitialize(LogbackLoggingSystem.java:98) 
    at org.springframework.boot.logging.LoggingApplicationListener.onApplicationStartedEvent(LoggingApplicationListener.java:215) 
    at org.springframework.boot.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:197) 
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:166) 
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:138) 
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:121) 
    at org.springframework.boot.context.event.EventPublishingRunListener.publishEvent(EventPublishingRunListener.java:111) 
    at org.springframework.boot.context.event.EventPublishingRunListener.started(EventPublishingRunListener.java:60) 
    at org.springframework.boot.SpringApplicationRunListeners.started(SpringApplicationRunListeners.java:48) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) 
    at com.aitrader.AitraderApp.main(AitraderApp.java:64) 
    ... 6 more 

,你可以看到我已經添加上deeplearning4j排除了,但我仍然得到SLF4J綁定衝突,不能用手指出了什麼問題。

+0

你看過'mvnw dependency:tree'的輸出並搜索重複的依賴關係嗎? –

+0

是的,我做過了,但我仍然無法撥出重複的SLF4J。順便說一下,我使用JHipster 3.x和spring boot 1.3.5.RELEASE。 –

+0

嗨,你可以在dl4j回購上提出問題嗎? https://github.com/deeplearning4j/deeplearning4j/issues我認爲我們已經照顧了記錄器的依賴關係。謝謝! –

回答

1

我在eclipse中通過選擇依賴層次結構選項卡而不是'mvn dependency:tree -Dverbose -Dincludes = org.slf4j'來指出問題,並發現'org.neuroph'具有重複的'slf4j- nop'下面的pom.xml部分應該是:

 <dependency> 
     <groupId>org.deeplearning4j</groupId> 
     <artifactId>deeplearning4j-core</artifactId> 
     <version>${dl4j.version}</version> 

     <exclusions> 
      <exclusion> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      </exclusion> 
      <exclusion> 
      <groupId>org.slf4j</groupId> 
      <artifactId>log4j-over-slf4j</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-api</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>ch.qos.logback</groupId> 
       <artifactId>logback-core</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>ch.qos.logback</groupId> 
       <artifactId>logback-classic</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>ch.qos.logback</groupId> 
       <artifactId>logback-access</artifactId> 
      </exclusion> 
    </exclusions> 

    </dependency> 

    <!-- ND4J backend. You need one in every DL4J project. Normally define artifactId as either "nd4j-native-platform" or "nd4j-cuda-7.5-platform" --> 

    <dependency> 
     <groupId>org.nd4j</groupId> 
     <artifactId>${nd4j.backend}</artifactId> 
     <exclusions> 
      <exclusion> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      </exclusion> 
      <exclusion> 
      <groupId>org.slf4j</groupId> 
      <artifactId>log4j-over-slf4j</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-api</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>ch.qos.logback</groupId> 
       <artifactId>logback-core</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>ch.qos.logback</groupId> 
       <artifactId>logback-classic</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>ch.qos.logback</groupId> 
       <artifactId>logback-access</artifactId> 
      </exclusion> 
    </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.neuroph</groupId> 
     <artifactId>neuroph-core</artifactId> 
     <version>${neuroph.version}</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-nop</artifactId> 
      </exclusion> 
      <exclusion> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      </exclusion> 
      <exclusion> 
      <groupId>org.slf4j</groupId> 
      <artifactId>log4j-over-slf4j</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-api</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>ch.qos.logback</groupId> 
       <artifactId>logback-core</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>ch.qos.logback</groupId> 
       <artifactId>logback-classic</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>ch.qos.logback</groupId> 
       <artifactId>logback-access</artifactId> 
      </exclusion> 
    </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>com.google.guava</groupId> 
     <artifactId>guava</artifactId> 
     <version>${guava.version}</version> 
    </dependency>