2012-11-19 41 views
1

我是Scala的新手。你能否帮我解决一下当我从命令行执行一个Scala类时遇到的问题。来自命令行的Scala RichInt NoClassDefFoundError

在Eclipse中执行下面的代码我得到了预期的结果,即打印了10次“hello”。然而,当我在命令行中执行,使用斯卡拉testArray从包含该文件testArray.class的目录,然后我得到一个异常

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) 
... 

我有一个Windows XP机器,安装的Java 1.6。 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") 
    }  
    } 
} 
+0

设置环境变量后,您是否重新启动了控制台会话?当您更改任何变量时,Windows不会更新这些变量。顺便说一句,这绝对是一个类路径问题。 – rlegendi

+1

注意:'var index:Int = 10'这行是不必要的。将其从您的代码中删除。 – Jesper

+0

我没有重新启动命令行,并且可以看到使用SET设置了环境变量,例如SCALA_HOME设置为c:\ scala-2.9.2。我正在使用的scala命令拾取包含在PATH中的安装bin目录中的Scala.bat,并且我没有篡改它。 –

回答

0

检查的解释器执行OK源,然后使用Eclipse的scalac外面编译和执行也确定后我收集了Eclipse部分必须是有过错的。事实上,我从Eclipse中卸载了scala并从nightly build重新安装,现在创建的类执行时没有任何问题。