Я много гуглил и сейчас полностью застрял. Я знаю, что есть похожие вопросы, но, пожалуйста, дочитайте до конца. Я пробовал все предложенные решения, и ни одно из них не сработало.
Я пытаюсь использовать класс IMain
из scala.tools.nsc
в проекте Play 2.1 (с использованием Scala 2.10.0).
Код контроллера
Это код, в котором я пытаюсь использовать IMain
в веб-сокете. Это только для тестирования.
object Scala extends Controller {
def session = WebSocket.using[String] { request =>
val interpreter = new IMain()
val (out,channel) = Concurrent.broadcast[String]
val in = Iteratee.foreach[String]{ code =>
interpreter.interpret(code) match {
case Results.Error => channel.push("error")
case Results.Incomplete => channel.push("incomplete")
case Results.Success => channel.push("success")
}
}
(in,out)
}
}
Как только что-то отправляется через Websocket, при воспроизведении регистрируется следующая ошибка:
Failed to initialize compiler: object scala.runtime in compiler mirror not found.
** Note that as of 2.8 scala does not assume use of the java classpath.
** For the old behavior pass -usejavacp to scala, or if using a Settings
** object programatically, settings.usejavacp.value = true.
Build.scala
object ApplicationBuild extends Build {
val appName = "escalator"
val appVersion = "1.0-SNAPSHOT"
val appDependencies = Seq(
"org.scala-lang" % "scala-compiler" % "2.10.0"
)
val main = play.Project(appName, appVersion, appDependencies).settings(
)
}
Что я уже пробовал
Все это не сработало:
- Я включил
fork := true
вBuild.scala
- A
Settings
object with:embeddedDefaults[MyType]
usejavacp.value = true
- Суть, предложенная в качестве ответа на вопрос Embedded Scala REPL наследует родительский путь к классам
Я не знаю, что делать сейчас.