如何在jvm上运行scala字节码?

如何在jvm上运行已编译的scala代码?

当我尝试以下命令时:

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

我收到以下错误: Exception in thread "main" java.lang.NoSuchMethodError: main

在scala代码中,我有一个名为Main的对象,它具有在那里定义的main函数。 它可以工作,如果我做scala -cp bin com.mcmc5.Main ,它工作正常。

有什么东西我不见了吗?

谢谢你,thejinx0r

Edit1:这是我的代码:我希望它在JVM上运行的原因是因为我想要实际执行字节码的服务器没有安装scala。 这是我的主要基本上(它有一些在它之前定义的值和变量,但基本上:

 package com.mcmc5 import java.text.{DateFormat, NumberFormat, DecimalFormat, SimpleDateFormat} import java.util.{Date} object Main { def main( args: Array[String]) = { println(numberOfOutputStructures) var structureSolver = new MC(20); structureSolver.start() } } 

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

编辑2问题解决了。

所以我实际上不相信这一点,但这对我有用。

所以我找到了一个线程 (如果你可以调用它)并且说java通常不喜欢整个object Main extends Application但是,这实际上解决了我的问题。 通过使用extends Application而不是定义一个名为main的函数解决了我的问题。 我想这取决于你使用的scala版本。 我目前正在使用scala 2.9,也许是rc2? 还是rc1?

在Windows上,

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

或其他地方

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

只需一个组合的“-cp”选项。 鉴于com.mcmc5.Main是使用scalac编译的,这绝对是正确的方法。