PlayFrameworkアプリケーション内でscalaパーサーを使用する必要があります。
import scala.tools.nsc._
trait Foo
class Parser {
def parse(code: String) = {
val settings = new Settings
settings.embeddedDefaults[Foo]
val interpreter = new Interpreter(settings)
interpreter.parse(code)
}
}
Build.scalaに次の依存関係があります
"org.scala-lang" % "scala-compiler" % "2.9.1"
このコードは、SBTを使用してビルドするときに機能します。Playでは、NullPointerExceptionで終了します。
コンパイラの初期化に失敗しました:オブジェクトscalaが見つかりません。
** 2.8以降、scalaはjavaクラスパスの使用を想定していないことに注意してください。
**古い動作の場合は-usejavacpをscalaに渡すか、設定を使用している場合
**プログラムでオブジェクト、settings.usejavacp.value=true。
Build.scala
import sbt._
import Keys._
import PlayProject._
object ApplicationBuild extends Build {
val appName = "com.qwerty.utils"
val appVersion = "1.0-SNAPSHOT"
val scalaVersion = "2.9.1"
val appDependencies = Seq(
"org.scala-lang" % "scala-compiler" % "2.9.1"
)
val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA).settings(
// Add your own project settings here
)
}