我的程序(用Scala 2.8编写)在通过NetBeans IDE启动时工作正常。但是当我尝试从外部运行它时,使用“java-jar”,它会说“线程中的异常”主“java.lang.NoClassDefFoundError:scala / ScalaObject ...”。放入所有库,包括与要运行的jar相同的目录内的Scala运行时没有帮助。如果我尝试使用scala本身运行jar,它会抱怨它无法将其解码为utf-8(我认为它需要scala源而不是jar)。那么如何运行Scala应用程序呢?
更新:对于那些后来有同样问题的人,我建议你阅读barjak答案下的评论(包括隐藏的最新评论),答案就在那里。 VonC还提供了一些关于这个主题的有趣链接。
答案 0 :(得分:4)
java命令的-jar
和-classpath
是互斥的:你不能java -jar YourScalaProg.jar -classpath scala-library.jar
如果要使用java -jar
运行应用程序,则必须在jar清单的Class-Path
部分中指定完整的类路径。
您可以仅使用-classpath
来运行您的应用,例如:java -classpath YourScalaProg.jar:scala-library.jar your.package.MainClass
。
答案 1 :(得分:3)
您是否正在使用Adventures with Scala博文中所述的scala-library.jar
?
java -classpath scala-library.jar:. YourClass
或:
java -classpath scala-library.jar:yourApp.jar YourClass
YourClass
的位置是 scalac
编译的Scala代码。
您会在SO问题“Creating a jar file from a Scala file”(或博客文章“the not so elegant way of creating an executable jar from scala code”)中找到相同的scala-library.jar
。