如何在JVM上运行Scala字节码?

6
如何在jvm上运行编译后的scala代码?
当我尝试以下命令时:
java -cp scala-library.jar -cp bin com.mcmc5.Main
我会得到以下错误: Exception in thread "main" java.lang.NoSuchMethodError: main
在scala代码中,我有一个名为Main的对象,并且在其中定义了主函数。如果我执行 scala -cp bin com.mcmc5.Main,它可以正常工作。
我是否漏掉了什么?
谢谢, thejinx0r 编辑1: 这是我的代码: 我希望在JVM上运行字节码的原因是要执行字节码的服务器上没有安装Scala。这是我的主要内容(它在之前定义了一些值和变量,但基本上是这样的):

但我仍然尝试使用java -cp scala-library.jar:bin com.mcmc5.Main,但仍然遇到相同的错误。

编辑2 问题已解决。

所以实际上我不太相信这个结果,但这对我有效。

我找到了一个线程(如果你可以这么称呼它),说Java通常不喜欢整个object Main extends Application。但是,通过使用extends Application而不是定义名为main的函数解决了我的问题。我想这取决于您正在使用的Scala版本。 我目前正在使用Scala 2.9,可能是rc2还是rc1?


1
很高兴能看到你的代码以帮助你。 - Alex
正如Ernest所提到的:只有最后一个-cp选项会被使用。不要指定两个! - ziggystar
通过命令行 scala -cp bin com.mcmc5.Main,您已经在 JVM 上运行了 Scala 代码。为什么要使用 java 命令来显式地执行它呢? - Jesper
我对Stack Overflow还有点陌生,如果我编辑了我的帖子,原来回答过这个帖子的人会收到通知吗?不好意思如果这里不是提问的合适地方。 - thejinx0r
1个回答

12

在Windows系统上,

java -cp scala-library.jar;bin com.mcmc5.Main

或其他地方

java -cp scala-library.jar:bin com.mcmc5.Main

仅使用单个组合的“-cp”选项。鉴于 com.mcmc5.Main 是通过 scalac 编译得出的,这绝对是正确的方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接