Scala:简单的HelloWorld在编译成Java类后没有运行

时间:2012-09-28 16:33:42

标签: scala

代码:

object HelloWorld{
    def main(args: Array[String]){
        println("Hello, world!")
    }
}

环境变量:

在Windows上:

JAVA_HOME = C:\Program Files\Java\jdk1.7.0_07
CLASSPATH = .;C:\Program Files\Java\jdk1.7.0_07\lib;C:\Software\scala-2.9.2\lib
PATH = %PATH%;C:\Program Files\Java\jdk1.7.0_07\bin;C:\Software\scala-2.9.2\bin
SCALA_HOME = C:\Software\scala-2.9.2

步骤:

scala HelloWorld.scala  //Correctly output Hello,world!
scalac HelloWorld.scala //No Compilation error
java HelloWorld  //Errors shown below

错误:

Exception in thread "main" java.lang.NoClassDefFoundError: scala/ScalaObject
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at HelloWorld.main(HelloWorld.scala)
Caused by: java.lang.ClassNotFoundException: scala.ScalaObject
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 13 more

对于noobie问题感到抱歉,但我已经尝试了很长时间但无法正常工作。

尝试scala -save jar文件并运行java -jar;还尝试更改类路径,例如添加scala-library.jar,但仍无效。

2 个答案:

答案 0 :(得分:0)

这对我有用(Linux):

java -cp scala-library-2.9.1.jar:. HelloWorld

scala-library-2.9.1.jar can be found here

在Windows上,您必须使用分号作为CLASSPATH分隔符:

java -cp scala-library-2.9.1.jar;. HelloWorld

基本上,您需要在代码中添加scala-library-*.jar JAR .class文件。在上面的示例中,只需使用.来表示当前目录中的.class文件。

答案 1 :(得分:0)

  

如果有数百个这是一个巨大的痛苦:(

不是,你只需将它们放在#JRE#/ lib / ext目录