2013-08-25 41 views
1

我認爲這應該是由於我的環境中的一些問題,我無法弄清楚,所以我發佈了一個問題。玩框架,2.x乾淨的項目,測試失敗 - MAC OS

我創建了一個新的play 2.1.3項目(scala 2.10.2)。

當我第一次運行播放(在此階段沒有編輯文件)並運行測試 sbt命令時,出現以下錯誤。

info] Updating {file:/private/tmp/myapp/}myapp... 
[info] Done updating. 
[info] Compiling 5 Scala sources and 1 Java source to /private/tmp/myapp/target/scala-2.10/classes... 
[info] Compiling 2 Scala sources to /private/tmp/myapp/target/scala-2.10/test-classes... 
log4j:WARN No appenders could be found for logger (play). 
log4j:WARN Please initialize the log4j system properly. 
java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.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:224) 
    at org.slf4j.bridge.SLF4JBridgeHandler.publish(SLF4JBridgeHandler.java:299) 
    at java.util.logging.Logger.log(Logger.java:509) 
    at java.util.logging.Logger.doLog(Logger.java:531) 
    at java.util.logging.Logger.logp(Logger.java:647) 
    at org.jboss.netty.logging.JdkLogger.debug(JdkLogger.java:36) 
    at org.jboss.netty.logging.InternalLoggerFactory$1.debug(InternalLoggerFactory.java:80) 
    at org.jboss.netty.channel.socket.nio.SelectorUtil.<clinit>(SelectorUtil.java:57) 
    at org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory.<init>(NioServerSocketChannelFactory.java:115) 
    at play.core.server.NettyServer.play$core$server$NettyServer$$newBootstrap(NettyServer.scala:40) 
    at play.core.server.NettyServer.<init>(NettyServer.scala:127) 
    at play.api.test.TestServer.start(Selenium.scala:124) 
    at play.api.test.Helpers$.running(Helpers.scala:71) 
    at test.IntegrationSpec$$anonfun$1$$anonfun$apply$1.apply(IntegrationSpec.scala:17) 
    at test.IntegrationSpec$$anonfun$1$$anonfun$apply$1.apply(IntegrationSpec.scala:17) 
    at org.specs2.mutable.SpecificationFeatures$$anon$1$$anonfun$asResult$1.apply(Specification.scala:34) 
    at org.specs2.mutable.SpecificationFeatures$$anon$1$$anonfun$asResult$1.apply(Specification.scala:34) 
    at org.specs2.execute.AsResult$$anon$10.asResult(Result.scala:230) 
    at org.specs2.execute.AsResult$.apply(Result.scala:238) 
    at org.specs2.specification.Contexts$$anon$4.apply(Contexts.scala:44) 
    at org.specs2.mutable.SpecificationFeatures$$anon$1.asResult(Specification.scala:34) 
    at org.specs2.execute.AsResult$.apply(Result.scala:238) 
    at org.specs2.specification.Example$$anonfun$apply$1.apply(Fragment.scala:141) 
    at org.specs2.specification.Example$$anonfun$apply$1.apply(Fragment.scala:141) 
    at org.specs2.specification.Example.execute(Fragment.scala:104) 
    at org.specs2.specification.FragmentExecution$$anonfun$1.apply(FragmentExecution.scala:52) 
    at org.specs2.specification.FragmentExecution$$anonfun$1.apply(FragmentExecution.scala:52) 
    at org.specs2.execute.ResultExecution$class.execute(ResultExecution.scala:22) 
    at org.specs2.execute.ResultExecution$.execute(ResultExecution.scala:76) 
    at org.specs2.specification.FragmentExecution$class.executeBody(FragmentExecution.scala:28) 
    at org.specs2.runner.TestInterfaceConsoleReporter.executeBody(TestInterfaceRunner.scala:125) 
    at org.specs2.specification.FragmentExecution$class.execute(FragmentExecution.scala:52) 
    at org.specs2.runner.TestInterfaceConsoleReporter.execute(TestInterfaceRunner.scala:125) 
    at org.specs2.specification.FragmentExecution$$anonfun$executeFragment$1$$anonfun$apply$1.apply(FragmentExecution.scala:35) 
    at org.specs2.specification.FragmentExecution$$anonfun$executeFragment$1$$anonfun$apply$1.apply(FragmentExecution.scala:35) 
    at org.specs2.control.Exceptions$class.catchAllOr(Exceptions.scala:54) 
    at org.specs2.control.Exceptions$.catchAllOr(Exceptions.scala:109) 
    at org.specs2.specification.FragmentExecution$$anonfun$executeFragment$1.apply(FragmentExecution.scala:35) 
    at org.specs2.specification.FragmentExecution$$anonfun$executeFragment$1.apply(FragmentExecution.scala:35) 
    at org.specs2.reporter.DefaultExecutionStrategy$$anonfun$org$specs2$reporter$DefaultExecutionStrategy$$executeSequence$1.apply(ExecutionStrategy.scala:99) 
    at org.specs2.reporter.DefaultExecutionStrategy$$anonfun$org$specs2$reporter$DefaultExecutionStrategy$$executeSequence$1.apply(ExecutionStrategy.scala:99) 
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) 
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) 
    at scala.collection.immutable.List.foreach(List.scala:309) 
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:244) 
    at scala.collection.AbstractTraversable.map(Traversable.scala:105) 
    at org.specs2.reporter.DefaultExecutionStrategy$class.org$specs2$reporter$DefaultExecutionStrategy$$executeSequence(ExecutionStrategy.scala:99) 
    at org.specs2.reporter.DefaultExecutionStrategy$$anonfun$execute$1$$anonfun$2.apply(ExecutionStrategy.scala:43) 
    at org.specs2.reporter.DefaultExecutionStrategy$$anonfun$execute$1$$anonfun$2.apply(ExecutionStrategy.scala:41) 
    at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:144) 
    at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:144) 
    at scala.collection.GenTraversableViewLike$Mapped$$anonfun$foreach$2.apply(GenTraversableViewLike.scala:81) 
    at scala.collection.Iterator$class.foreach(Iterator.scala:727) 
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1156) 
    at scala.collection.IterableViewLike$Transformed$class.foreach(IterableViewLike.scala:42) 
    at scala.collection.SeqViewLike$AbstractTransformed.foreach(SeqViewLike.scala:43) 
    at scala.collection.GenTraversableViewLike$Appended$class.foreach(GenTraversableViewLike.scala:99) 
    at scala.collection.SeqViewLike$$anon$2.foreach(SeqViewLike.scala:77) 
    at scala.collection.GenTraversableViewLike$Mapped$class.foreach(GenTraversableViewLike.scala:80) 
    at scala.collection.SeqViewLike$$anon$3.foreach(SeqViewLike.scala:78) 
    at scala.collection.TraversableOnce$class.foldLeft(TraversableOnce.scala:144) 
    at scala.collection.SeqViewLike$AbstractTransformed.foldLeft(SeqViewLike.scala:43) 
    at org.specs2.reporter.DefaultExecutionStrategy$$anonfun$execute$1.apply(ExecutionStrategy.scala:41) 
    at org.specs2.reporter.DefaultExecutionStrategy$$anonfun$execute$1.apply(ExecutionStrategy.scala:38) 
    at org.specs2.internal.scalaz.syntax.IdOps$class.$bar$greater(IdOps.scala:15) 
    at org.specs2.internal.scalaz.syntax.ToIdOps$$anon$1.$bar$greater(IdOps.scala:68) 
    at org.specs2.reporter.AllExporting$class.report(AllExporting.scala:15) 
    at org.specs2.runner.TestInterfaceConsoleReporter.report(TestInterfaceRunner.scala:125) 
    at org.specs2.runner.TestInterfaceRunner.runSpecification(TestInterfaceRunner.scala:61) 
    at org.specs2.runner.TestInterfaceRunner.run(TestInterfaceRunner.scala:54) 
    at sbt.ForkMain$Run.runTests(ForkMain.java:157) 
    at sbt.ForkMain$Run.run(ForkMain.java:169) 
    at sbt.ForkMain.main(ForkMain.java:84) 
[info] IntegrationSpec 
[info] 
[info] Application should 
[error] ! work from within a browser 
[error]  RuntimeException: java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V (Helpers.scala:71) 
[error] play.api.test.TestServer.start(Selenium.scala:128) 
[error] play.api.test.Helpers$.running(Helpers.scala:71) 
[error] test.IntegrationSpec$$anonfun$1$$anonfun$apply$1.apply(IntegrationSpec.scala:17) 
[error] test.IntegrationSpec$$anonfun$1$$anonfun$apply$1.apply(IntegrationSpec.scala:17) 
[error] org.slf4j.bridge.SLF4JBridgeHandler.callLocationAwareLogger(SLF4JBridgeHandler.java:224) 
[error] org.slf4j.bridge.SLF4JBridgeHandler.publish(SLF4JBridgeHandler.java:299) 
[error] org.jboss.netty.logging.JdkLogger.debug(JdkLogger.java:36) 
[error] org.jboss.netty.logging.InternalLoggerFactory$1.debug(InternalLoggerFactory.java:80) 
[error] org.jboss.netty.channel.socket.nio.SelectorUtil.<clinit>(SelectorUtil.java:57) 
[error] org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory.<init>(NioServerSocketChannelFactory.java:115) 
[error] play.core.server.NettyServer.play$core$server$NettyServer$$newBootstrap(NettyServer.scala:40) 
[error] play.core.server.NettyServer.<init>(NettyServer.scala:127) 
[error] play.api.test.TestServer.start(Selenium.scala:124) 
[error] play.api.test.Helpers$.running(Helpers.scala:71) 
[error] test.IntegrationSpec$$anonfun$1$$anonfun$apply$1.apply(IntegrationSpec.scala:17) 
[error] test.IntegrationSpec$$anonfun$1$$anonfun$apply$1.apply(IntegrationSpec.scala:17) 
[error] org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V 
[error] org.slf4j.bridge.SLF4JBridgeHandler.callLocationAwareLogger(SLF4JBridgeHandler.java:224) 
[error] org.slf4j.bridge.SLF4JBridgeHandler.publish(SLF4JBridgeHandler.java:299) 
[error] org.jboss.netty.logging.JdkLogger.debug(JdkLogger.java:36) 
[error] org.jboss.netty.logging.InternalLoggerFactory$1.debug(InternalLoggerFactory.java:80) 
[error] org.jboss.netty.channel.socket.nio.SelectorUtil.<clinit>(SelectorUtil.java:57) 
[error] org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory.<init>(NioServerSocketChannelFactory.java:115) 
[error] play.core.server.NettyServer.play$core$server$NettyServer$$newBootstrap(NettyServer.scala:40) 
[error] play.core.server.NettyServer.<init>(NettyServer.scala:127) 
[error] play.api.test.TestServer.start(Selenium.scala:124) 
[error] play.api.test.Helpers$.running(Helpers.scala:71) 
[error] test.IntegrationSpec$$anonfun$1$$anonfun$apply$1.apply(IntegrationSpec.scala:17) 
[error] test.IntegrationSpec$$anonfun$1$$anonfun$apply$1.apply(IntegrationSpec.scala:17) 

更新 - 問題已解決 總算進入classpath中這些文件,

rm /Library/Java/Extensions/log4j-1.2.15.jar 
rm /Library/Java/Extensions/slf4j-api-1.5.8.jar 
rm /Library/Java/Extentions/slf4j-log4j12-1.5.8.jar 

我不知道是哪個程序放置這些文件。

+0

您是否正確設置了log4j/sfl4j? Play的默認記錄器是'play.Logger',它使用了logback。 sflj4似乎被spec2使用。也許這有助於:http://stackoverflow.com/a/11634963/897024 – Kapep

+0

我實際上沒有修改任何東西,這只是我從全新安裝/應用程序收到的響應。說實話,我在測試中不需要任何記錄。 –

回答

2

即使您不使用播放記錄器,默認情況下也會調用播放記錄器。檢查application.conf 它包含類似:

# Root logger: 
logger=ERROR 

# Logger used by the framework: 
logger.play=INFO 

# Logger provided to your application: 
logger.application=DEBUG 

和Play.logger使用log4j和SLF4J既是你可以在上面看到。所以你需要正確配置它們。 檢查此問題以設置slf4和log4j How to get SLF4J "Hello World" working with log4j?