Scala Play Frameworkでエラーが発生した
ちょいちょいハマったからメモ
sbt 0.13.0以上でplay実行したら実行できなかった件
java.lang.NoClassDefFoundError: scala/StringContext at sbt.CommandStrings$.<init>(CommandStrings.scala:62) at sbt.CommandStrings$.<clinit>(CommandStrings.scala) at sbt.BuiltinCommands$.initialize(Main.scala:195) at sbt.xMain.run(Main.scala:27) at xsbt.boot.Launch$.run(Launch.scala:55) at xsbt.boot.Launch$$anonfun$explicit$1.apply(Launch.scala:45) at xsbt.boot.Launch$.launch(Launch.scala:69) at xsbt.boot.Launch$.apply(Launch.scala:16) at xsbt.boot.Boot$.runImpl(Boot.scala:31) at xsbt.boot.Boot$.main(Boot.scala:20) at xsbt.boot.Boot.main(Boot.scala) Caused by: java.lang.ClassNotFoundException: scala.StringContext at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:423) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ... 11 more Error during sbt execution: java.lang.NoClassDefFoundError: scala/StringContext
色々調べたけど
scala 2.9にはscala/StringContextがない??
なので、scala 2.10にしました。
→以前 Error during sbt execution: java.lang.NoClassDefFoundError: scala/StringContext
(´・ω・`)
scalaのversionが変わらない・・・?
→ /path/to/PLAY_HOME/framework/sbt/play.boot.properties
[scala]
version: 2.9.2[app]
org: play
name: console
version: 2.1.5
class: play.console.Console
cross-versioned: true[repositories]
local
maven-local
typesafe-ivy-releases: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]
maven-central[boot]
directory: ${play.home}/sbt/boot[ivy]
ivy-home: ${play.home}/../repository
scalaのversionが2.9.2 ??
とりあえず、PATHとかの問題なんかわからないので、とりあえず、sbt 0.12.4で我慢することに
PlayProjectがダメな件
sbt 0.12.4にしてplay 2.1.5にしたらWarningでました(´・ω・`)w
WARNING Looks like you are using a deprecated version of Play's SBT Project (PlayProject in project/Build.scala). We are adding all of the new Play artifacts to your libraryDependencies for now but consider switching to the new API (i.e. play.Project). For any migration related issues, please consult the migration manual at http://www.playframework.org
なんかPlayProjectなくなったんですね。
import sbt._ import Keys._ import PlayProject._ //→ import play.Project._ object ApplicationBuild extends Build { val appName = "Hoge" val appVersion = "1.0-SNAPSHOT" val appDependencies = Seq( // Add your project dependencies here, ) val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA).settings( // Add your own project settings here ) // → play.Project( … ) }
すると、appVersionの引数の場所は fileクラスだ!とか怒られました。
・・・が、なぜか再現しなくなりました(๑´╹‸╹`๑)
怒った原因がわからないので、参考にしたページをとりあえず、置いておいて終わろうと思います(´・ω・`)w