2011-04-27 29 views
5

如何在jvm上运行编译后的scala代码?如何在jvm上运行scala字节码?

当我尝试使用以下命令:

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

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

在Scala代码,我有一个叫做主要对象并将其定义的主要功能在那里。它工作,如果我做 scala -cp bin com.mcmc5.Main ,它工作正常。

有什么,我失踪?

谢谢 thejinx0r

EDIT1: 这里是我的代码: 为什么我希望它运行在JVM上的原因是因为我想要去实际执行的字节码没有阶服务器安装。这是我的主要有本质(它有一定的价值和之前定义的变量,但本质:

 
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 问题解决了。

所以我其实不相信这一点,但是这对我的作品。

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

+1

很高兴看到你的代码来帮助你 – axaluss 2011-04-27 01:54:51

+0

正如欧内斯特所说:只有最后的-cp选项将被使用。不要指定两个! – ziggystar 2011-04-27 06:45:50

+0

使用命令行'scala -cp bin com.mcmc5.Main',您已经在JVM上运行您的Scala代码。你为什么要用'java'命令明确地做到这一点? – Jesper 2011-04-27 13:33:49

回答

10

在Windows上,

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

或其他地方

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

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