在执行Scala程序期间放入Scala解释器

时间:2010-07-30 17:05:37

标签: eclipse scala eclipse-plugin interpreter

我正试图在我的Scala程序中插入Scala解释器。 我见过this very interesting question但它似乎不适用于Eclipse(3.5.2 + Scala插件)​​。

我收到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: scala/io/LowPriorityCodecImplicits
    at scala.tools.nsc.Interpreter$.breakIf(Interpreter.scala:1265)
    at userInterface.CommandInterpreter$$anonfun$main$1.apply$mcVI$sp(CommandInterpreter.scala:102)
    at scala.collection.immutable.Range$ByOne$class.foreach$mVc$sp(Range.scala:275)
    at scala.collection.immutable.Range$$anon$1.foreach$mVc$sp(Range.scala:267)
    at userInterface.CommandInterpreter$.main(CommandInterpreter.scala:101)
    at userInterface.CommandInterpreter.main(CommandInterpreter.scala)
Caused by: java.lang.ClassNotFoundException: scala.io.LowPriorityCodecImplicits
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    ... 6 more

如果我使用scalac编译并在终端上运行它,那么相同的代码就可以工作。 可能有什么不对? Eclipse的东西?

谢谢!

PS:这是我正在努力工作的简化版本

import scala.tools.nsc.Interpreter._
object ScalaShell {
  def main(args: Array[String]) {
    break(Nil)
  }
}

1 个答案:

答案 0 :(得分:1)

您没有提到您正在使用的Scala命令行工具或Scala IDE for Eclipse的版本,但我会坚持认为命令行工具是2.8.0而不是Eclipse工具是2.7.x或者你的Eclipse项目类路径上有一个2.7.x scala-library .jar(可能是通过Maven依赖项引入的)。

如果是这种情况,则原始安装2.8.0.final的Eclipse工具应该为您解决问题。如果没有,那么你可能在SDT中发现了一个错误,你应该报告它here