2016-09-28 69 views
1

我有一個scala項目編譯和可以執行沒有錯誤。 我添加直徑依賴於我的模塊的build.sbt文件:Scala運行失敗後添加依賴build.sbt

libraryDependencies ++= Seq(
    // some other dependencies here 
    // then diameter dependencies 
    "org.mobicents.diameter" % "jdiameter-api" % "1.7.0.106", 
    "org.mobicents.diameter" % "jdiameter-impl" % "1.7.0.106" 
) 

該項目仍編譯,但不能運行:

[app] $ compile 
[success] Total time: 1 s, completed Sep 28, 2016 2:54:36 PM 
[app] $ run 

SLF4J: Class path contains multiple SLF4J bindings. 

--- (Running the application, auto-reloading is enabled) --- 

log4j:WARN No appenders could be found for logger (akka.event.slf4j.Slf4jLogger). 
log4j:WARN Please initialize the log4j system properly. 
java.lang.AbstractMethodError: org.slf4j.impl.Log4jLoggerAdapter.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V 
    at org.slf4j.bridge.SLF4JBridgeHandler.callLocationAwareLogger(SLF4JBridgeHandler.java:221) 
    at org.slf4j.bridge.SLF4JBridgeHandler.publish(SLF4JBridgeHandler.java:297) 
    at java.util.logging.Logger.log(Logger.java:738) 
    at java.util.logging.Logger.doLog(Logger.java:765) 
    at java.util.logging.Logger.logp(Logger.java:930) 
    at org.jboss.netty.logging.JdkLogger.debug(JdkLogger.java:36) 
    at org.jboss.netty.channel.socket.nio.SelectorUtil.<clinit>(SelectorUtil.java:57) 
    at org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory.getMaxThreads(NioServerSocketChannelFactory.java:248) 
    at org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory.<init>(NioServerSocketChannelFactory.java:115) 
    at play.core.server.NettyServer.play$core$server$NettyServer$$newBootstrap(NettyServer.scala:46) 
    at play.core.server.NettyServer$$anonfun$1.apply(NettyServer.scala:130) 
    at play.core.server.NettyServer$$anonfun$1.apply(NettyServer.scala:129) 
    at scala.Option.map(Option.scala:146) 
    at play.core.server.NettyServer.<init>(NettyServer.scala:129) 
    at play.core.server.NettyServerProvider.createServer(NettyServer.scala:200) 
    at play.core.server.NettyServerProvider.createServer(NettyServer.scala:199) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1.apply(DevServerStart.scala:208) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1.apply(DevServerStart.scala:61) 
    at play.utils.Threads$.withContextClassLoader(Threads.scala:21) 
    at play.core.server.DevServerStart$.mainDev(DevServerStart.scala:60) 
    at play.core.server.DevServerStart$.mainDevHttpMode(DevServerStart.scala:50) 
    at play.core.server.DevServerStart.mainDevHttpMode(DevServerStart.scala) 
    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 play.runsupport.Reloader$.startDevMode(Reloader.scala:223) 
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.devModeServer$lzycompute$1(PlayRun.scala:74) 
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.play$sbt$run$PlayRun$$anonfun$$anonfun$$anonfun$$devModeServer$1(PlayRun.scala:74) 
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.apply(PlayRun.scala:100) 
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.apply(PlayRun.scala:53) 
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47) 
[trace] Stack trace suppressed: run last app/compile:run for the full output. 
[error] (app/compile:run) java.lang.reflect.InvocationTargetException 
[error] Total time: 2 s, completed Sep 28, 2016 2:54:42 PM 

我不明白,怎麼加這兩個依賴關係可能會破壞應用。我可以在.ivy2緩存中看到下載的jar文件,從而解決了新的依賴關係。

我該如何解決這個問題? 完整的輸出說:

java.lang.reflect.InvocationTargetException 

非常感謝您的幫助


更新

如果我添加這種依賴只是

"org.mobicents.diameter" % "jdiameter-api" % "1.7.0.106" 

工程:)

但我需要兩個:(

回答

1

它看起來像兩個依賴項添加自己的記錄器實現,並且它們在運行時發生衝突。

嘗試從兩個中的一個排除它,例如:

libraryDependencies ++= Seq(
    "org.mobicents.diameter" % "jdiameter-api" % "1.7.0.106", 
    "org.mobicents.diameter" % "jdiameter-impl" % "1.7.0.106" exclude("org.slf4j", "slf4j-jdk14") 
) 
+0

感謝您的幫助,我試圖但這不是更好(清理文件,然後用成功編譯,但運行失敗) – marcesso

+0

@marcesso - 您將需要按照Gabriele清理傳遞依賴項(使用排除)。檢查您的版本中正在添加哪些庫以供確認。 –