2011-04-27 15 views
5

¿Cómo ejecuto el código scala compilado en jvm?¿Cómo se ejecuta scala bytecode en el jvm?

Cuando intento el siguiente comando:

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

me sale el siguiente error: Exception in thread "main" java.lang.NoSuchMethodError: main

En el código Scala, tengo un objeto llamado principal y se ha definido la función principal ahí. Funciona si lo hago scala -cp bin com.mcmc5.Main , funciona bien.

¿Hay algo que me falta?

Gracias, thejinx0r

Edit1: Aquí está mi código: La razón por la que desea que se ejecute en la JVM se debe a que el servidor en el que desea ejecutar realmente el código de bytes no tiene Scala instalado Esto es lo que mi principal tiene esencialmente (que tiene algunos valores y variables definidas antes, pero esencialmente:.

 
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() 
    } 
} 

Pero todavía intentado usar java -cp scala-library.jar:bin com.mcmc5.Main y yo todavía tengo el mismo error

Editar 2 Problema resuelto.

Así que en realidad no creen esto, pero esto funciona para mí.

Así que había encontrado un thread (si se puede llamar así) y dijo que java generalmente no le gusta el conjunto object Main extends Application Pero, eso realmente resolvió mi problema. Al usar extends Application en lugar de definir una función llamada main resolvió mi problema. Supongo que depende de qué versión de scala estés usando. Actualmente estoy en scala 2.9, rc2 quizás? o rc1?

+1

sería bueno ver su código para ayudarlo – axaluss

+0

Como mencionó Ernest: Solo se usará la última opción -cp. ¡No especifique dos! – ziggystar

+0

Con una línea de comando 'scala -cp bin com.mcmc5.Main', ya está ejecutando su código Scala en la JVM. ¿Por qué quieres hacerlo explícitamente usando el comando 'java'? – Jesper

Respuesta

10

En Windows,

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

o

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

una única opción en otros lugares que estén combinados "cp". Esta es definitivamente la forma correcta, dado que com.mcmc5.Main se compiló con scalac.

Cuestiones relacionadas