如何从IDE以外的命令行运行NetBeans构建的Scala应用程序jar?
我的程序(用Scala 2.8编写)通过NetBeans IDE启动时运行良好。但是,当我尝试从外部运行它时,使用“java jar”,它说“线程中的异常”main“java.lang.NoClassDefFoundError:scala/ScalaObject ...”。把所有的图书馆,包括。与运行的jar相同的目录下的Scala运行时没有帮助。如果我尝试使用scala本身运行jar,它会抱怨它无法将其解码为utf-8(我认为它期望的是scala源而不是jar)。那么我该如何运行一个Scala应用程序呢?如何从IDE以外的命令行运行NetBeans构建的Scala应用程序jar?
更新:对于那些稍后来到这里有同样问题的人,我建议阅读barjak的回答下的评论(包括隐藏的最新内容),答案就在那里。 VonC也提供了一些关于这个主题的有趣链接。
的-jar
和java命令的-classpath
是相互排斥的:如果你想运行与java -jar
您的应用程序,那么全类路径必须在罐子的的Class-Path
部分中指定你不能做java -jar YourScalaProg.jar -classpath scala-library.jar
表现。
您可以仅使用-classpath
运行您的应用程序,如下所示:java -classpath YourScalaProg.jar:scala-library.jar your.package.MainClass
。
您是否使用scala-library.jar
,如Adventures with Scala博客文章中所述?
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
。
查看http://stackoverflow.com/questions/809138/creating-a-jar-file-from-a-scala-file – 2010-09-12 21:17:59
@ alexey-romanov,我从那里开始,没有帮助。我对清单一无所知,我使用NetBeans IDE(本身使用Ant)并依靠它来构建。 – Ivan 2010-09-12 21:43:31