gpt4 book ai didi

Play 2.1中的scala.tools.nsc.IMain

转载 作者:行者123 更新时间:2023-12-04 04:35:20 24 4
gpt4 key购买 nike

我在Google上搜索了很多,现在完全被卡住了。我知道,还有类似的问题,但请仔细阅读。我已经尝试了所有建议的解决方案,但都没有成功。

我正在尝试在Play 2.1项目(使用Scala 2.10.0)中使用IMain中的scala.tools.nsc类。

Controller 代码

这是代码,我尝试在Websocket中使用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
  • 带有以下内容的Settings对象:
  • embeddedDefaults[MyType]
  • usejavacp.value = true
  • 被提议作为对问题Embedded Scala REPL inherits parent classpath
  • 的回答的灵魂

    我不知道现在该怎么办。

    最佳答案

    这里的问题是sbt不会将scala库添加到类路径中。
    以下变通办法起作用。
    首先在顶层项目目录(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")

    上面通过将scala库添加到java类中来创建bootclasspath。 Play Framework 不是问题,它来自sbt。当任何scala项目与sbt一起运行时,也会发生相同的问题。经过一个简单的项目测试。当它从 eclipse 运行时,它的工作正常。

    编辑: Link to sample project demonstrating the above.`

    关于Play 2.1中的scala.tools.nsc.IMain,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16511233/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com