如何在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
编译的,这绝对是正确的方法。