Mar*_*ing 9 scala classpath read-eval-print-loop playframework-2.0
我google了很多,现在完全陷入困境.我知道,有类似的问题,但请读到最后.我已经尝试了所有提出的解决方
我试图在Play 2.1项目中使用IMain
该类scala.tools.nsc
(使用Scala 2.10.0).
控制器代码
这是代码,我尝试IMain
在Websocket中使用它.这仅用于测试.
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)
}
}
Run Code Online (Sandbox Code Playgroud)
只要通过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.
Run Code Online (Sandbox Code Playgroud)
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(
)
}
Run Code Online (Sandbox Code Playgroud)
到目前为止我尝试过的
这一切都行不通:
fork := true
了Build.scala
Settings
对象:
embeddedDefaults[MyType]
usejavacp.value = true
我现在不知道该怎么做.
小智 3
这里的问题是 sbt 没有将 scala-library 添加到类路径中。以下解决方法有效。首先在顶级项目目录(app、conf 等的父目录)中创建一个文件夹 lib 并将 scala-library.jar 复制到那里
然后您可以使用以下代码来托管解释器:
val settings = new Settings
settings.bootclasspath.value +=scala.tools.util.PathResolver.Environment.javaBootClassPath + File.pathSeparator + "lib/scala-library.jar"
val in = new IMain(settings){
override protected def parentClassLoader = settings.getClass.getClassLoader()
}
val res = in.interpret("val x = 1")
Run Code Online (Sandbox Code Playgroud)
上面通过将 scala 库添加到 java 类来创建 bootclasspath。这不是来自 sbt 的 play 框架的问题。任何使用 sbt 运行的 scala 项目都会出现同样的问题。通过一个简单的项目进行了测试。当它从 eclipse 运行时,它工作正常。
编辑:链接到演示上述内容的示例项目。`
归档时间: |
|
查看次数: |
1037 次 |
最近记录: |