1

我认为这应该是由于我的环境中的一些问题,我无法弄清楚,所以我发布了一个问题。

我创建了一个新的 play 2.1.3 项目(scala 2.10.2)。

当我第一次运行 play 时(在这个阶段没有编辑文件)并运行test 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)

更新 - 问题已修复 这些文件以某种方式设法进入类路径,

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

我不知道是哪个程序放置了这些文件。

4

1 回答 1

2

即使您不使用 Play logger,也会默认调用它。检查您的 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。所以你需要正确配置它们。检查this question for setting up slf4 and log4j How to get SLF4J "Hello World" working with log4j?

于 2013-08-25T20:18:40.473 回答