日頃の行い

個人的な日頃の行いをつらつら書いてます\\\\ ٩( 'ω' )و ////

play frameworkで java.lang.NoClassDefFoundError: scala/StringContext

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

SBTSubProjects