【发布时间】:2012-11-20 14:03:02
【问题描述】:
我是 Scala 新手。你能帮我解决从命令行执行 Scala 类时遇到的问题吗?
在 Eclipse 中执行下面的代码,我得到了预期的结果,即“hello”打印了 10 次。但是,当我从命令行执行时,使用包含文件 testArray.class 的目录中的 scala testArray 然后我得到一个异常
java.lang.NoClassDefFoundError: scala/runtime/RichInt$
at TestArray$.main(TestArray.scala:3)
at TestArray.main(TestArray.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
...
我有一台安装了 Java 1.6 的 Windows XP 机器。 Scala bin 目录包含在 PATH 中,Scala 目录设置为 SCALA_HOME。我正在使用 Scala 2.9.2。
完整来源:
object TestArray {
def main(args: Array[String]): Unit = {
var index: Int = 10
for (index <- 0 until 10) {
println("hello")
}
}
}
【问题讨论】:
-
设置环境变量后是否重启了控制台会话?当您更改任何变量时,Windows 不会更新它们。顺便说一句,这绝对是一个类路径问题。
-
注意:
var index: Int = 10这行不是必须的;从您的代码中删除它。 -
我确实重新启动了命令行,可以看到环境变量使用 SET 设置正常,例如 SCALA_HOME 设置为 c:\scala-2.9.2。我正在使用的 scala 命令获取 PATH 中安装 bin 目录中包含的 Scala.bat,并且我没有篡改它。
-
奇怪的是,当解释器启动并执行以下操作时,我没有收到任何错误,for (index
-
我在 5 个小时内无法回答我的问题。但是,我在这里发布了我发现的解决问题的方法。检查源代码在解释器中执行 OK,然后使用 scalac 在 Eclipse 外部编译并执行 OK,我收集到 Eclipse 部分一定有问题。事实上,我从 Eclipse 中卸载了 scala 并从夜间构建中重新安装,现在自动构建生成的类可以毫无问题地执行。
标签: scala