1

I think this should be due to some issues in my enviroment, I can't figure this out so I am posting a question.

I created a new play 2.1.3 project (scala 2.10.2).

When I run play for the first time (no file is edited at this stage) and run the test sbt command, I get the following error.

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)

UPDATE - Problem Fixed These files somehow managed to get into 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

I don't know which program placed these files.

Ali Salehi
  • 6,899
  • 11
  • 49
  • 75
  • Did you setup log4j/sfl4j correctly? Play's default logger is `play.Logger` which uses logback. sflj4 seems to be used by spec2. Maybe this helps: http://stackoverflow.com/a/11634963/897024 – kapex Aug 25 '13 at 10:13
  • I haven't actually modified anything, this is just the response I receive from a fresh installation/application. To be honest, I don't need any sort of logging in my tests. – Ali Salehi Aug 25 '13 at 10:25

1 Answers1

2

Play logger will be called by default even if you don't use it. Check your application.conf it contains something like:

 # Root logger:
logger=ERROR

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

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

and Play.logger uses log4j and slf4j both as you can see above . So you need to configure them properly . Check this question for setting up slf4 and log4j How to get SLF4J "Hello World" working with log4j?

Community
  • 1
  • 1
kaushik gandhi
  • 768
  • 8
  • 14