Play環境構築時のjava.lang.ExceptionInInitializerError、java.lang.NoClassDefFoundError

Play2.1 + Scala2.10.0で開発をしようと、それぞれインストールを行っていざplay runでデフォルトページを表示しようとしたらjava.lang.ExceptionInInitializerError とやらがでるわ、ブラウザリロードしてみたらjava.lang.NoClassDefFoundErrorなどがでてくるやらで早速つまった。

エラー文は以下の感じ。

MatchError: java.lang.NoClassDefFoundError: Could not initialize class play.templates.ScalaTemplateCompiler$TemplateAsFunctionCompiler$PresentationCompiler$ (of class java.lang.NoClassDefFoundError) No source available, here is the exception stack trace: scala.MatchError: java.lang.NoClassDefFoundError: Could not initialize class play.templates.ScalaTemplateCompiler$TemplateAsFunctionCompiler$PresentationCompiler$ (of class java.lang.NoClassDefFoundError) sbt.PlayReloader$$anon$2$$anonfun$reload$2$$anonfun$apply$15.apply(PlayReloader.scala:346) sbt.PlayReloader$$anon$2$$anonfun$reload$2$$anonfun$apply$15.apply(PlayReloader.scala:346) scala.Option.map(Option.scala:133) sbt.PlayReloader$$anon$2$$anonfun$reload$2.apply(PlayReloader.scala:346) sbt.PlayReloader$$anon$2$$anonfun$reload$2.apply(PlayReloader.scala:344) scala.Either$LeftProjection.map(Either.scala:374) sbt.PlayReloader$$anon$2.reload(PlayReloader.scala:344) play.core.ReloadableApplication.get(ApplicationProvider.scala:98) play.core.server.Server$class.sendHandler$1(Server.scala:56) play.core.server.Server$$anonfun$getHandlerFor$4.apply(Server.scala:88) play.core.server.Server$$anonfun$getHandlerFor$4.apply(Server.scala:87) scala.util.Either$RightProjection.flatMap(Either.scala:523) play.core.server.Server$class.getHandlerFor(Server.scala:87) play.core.server.NettyServer.getHandlerFor(NettyServer.scala:34) play.core.server.netty.PlayDefaultUpstreamHandler.messageReceived(PlayDefaultUpstreamHandler.scala:103) org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:75) org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:565) org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:793) org.jboss.netty.handler.codec.http.HttpContentDecoder.messageReceived(HttpContentDecoder.java:104) org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:75) org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:565) org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:793) org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296) org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:455) org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:538) org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:437) org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:75) org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:565) org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:560) org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268) org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255) org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:84) org.jboss.netty.channel.socket.nio.AbstractNioWorker.processSelectedKeys(AbstractNioWorker.java:472) org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:333) org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35) org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102) org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) java.lang.Thread.run(Thread.java:722)

 

以下、解決法

 

問題だったのはplayのディレクトリの場所。私は「C:\Program Files\play-2.1.0」に置いていたのだけど、「Progeam Files」の部分がわるかった。つまり、スペースが入っていること。

なので、「C:\play-2.1.0」に移動してあげると正常に起動した。