Tôi googled rất nhiều và bây giờ hoàn toàn bị mắc kẹt. Tôi biết, có những câu hỏi tương tự nhưng hãy đọc đến cùng. Tôi đã thử tất cả các giải pháp được đề xuất và không có giải pháp nào hiệu quả.scala.tools.nsc.IMain trong Play 2.1
Tôi đang cố gắng sử dụng lớp IMain
từ scala.tools.nsc
trong dự án Play 2.1 (Sử dụng Scala 2.10.0).
điều khiển Mã
Đây là mã, nơi tôi cố gắng sử dụng IMain
trong một WebSocket. Đây chỉ là để thử nghiệm.
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)
}
}
Ngay sau khi một cái gì đó được gửi qua WebSocket lỗi sau sẽ được ghi lại bởi vở kịch:
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(
)
}
Những gì tôi đã cố gắng cho đến nay
Tất cả điều này đã không làm việc:
- Tôi đã bao gồm
fork := true
trongBuild.scala
- Một đối tượng
Settings
với:embeddedDefaults[MyType]
usejavacp.value = true
- Các soultion đề xuất như là câu trả lời đến Câu hỏi Embedded Scala REPL inherits parent classpath
Tôi không biết phải làm gì bây giờ.
bạn đã thử một cái gì đó đơn giản như (scala.tools.nsc.interpreter.IMain mới()). Giải thích ("val x = 1") phù hợp ... – Iraklis
@Iraklis vâng.Tôi đặt nó trong mã khởi tạo trong Global.scala. Thông báo lỗi tương tự. –
Bạn cũng có thể muốn xem câu trả lời của tôi [ở đây] (http://stackoverflow.com/a/23925201/3686016) về vấn đề này. – Aniket