如何从IDE外的命令行运行NetBeans构建的Scala应用程序jar?

时间:2010-09-12 21:03:11

标签: scala netbeans

我的程序(用Scala 2.8编写)在通过NetBeans IDE启动时工作正常。但是当我尝试从外部运行它时,使用“java-jar”,它会说“线程中的异常”主“java.lang.NoClassDefFoundError:scala / ScalaObject ...”。放入所有库,包括与要运行的jar相同的目录内的Scala运行时没有帮助。如果我尝试使用scala本身运行jar,它会抱怨它无法将其解码为utf-8(我认为它需要scala源而不是jar)。那么如何运行Scala应用程序呢?

更新:对于那些后来有同样问题的人,我建议你阅读barjak答案下的评论(包括隐藏的最新评论),答案就在那里。 VonC还提供了一些关于这个主题的有趣链接。

2 个答案:

答案 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