代码:
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
,但仍无效。
答案 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目录
中