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

the*_*x0r 5 java 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()
    }
} 
,我仍然有同样的错误.

编辑2 问题解决了.

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

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

Ern*_*ill 11

在Windows上,

java -cp scala-library.jar;bin com.mcmc5.Main
Run Code Online (Sandbox Code Playgroud)

或其他地方

java -cp scala-library.jar:bin com.mcmc5.Main
Run Code Online (Sandbox Code Playgroud)

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