2010-05-22 11 views
5

corro:Come posso eseguire un pacchetto creato con Simple Build Tool?

$ echo 'object Hi { def main(args: Array[String]) { println("Hi!") } }' > hw.scala 
$ sbt 
> warn 
Set log level to warn 
> run 
Hi! 
> package 
$ java -jar target/scala_2.7.7/test_2.7.7-1.0.jar 
Exception in thread "main" java.lang.NoClassDefFoundError: scala/ScalaObject 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:621) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) 

Perché non è possibile eseguire questo pacchetto jar in questo modo?

risposta

4

Si sta tentando di eseguirlo senza il runtime scala. O utilizzare l'eseguibile Scala:

scala -jar target/scala_2.7.7/test_2.7.7-1.0.jar 

o, aggiungere il vaso Scala al classpath

java -cp target/scala_2.7.7/test_2.7.7-1.0.jar:$PATH_TO_SCALA_JAR Hi 
+0

Non posso correre il primo come non ho Scala installato (SBT scaricato e utilizzando internamente). Il secondo non funziona. –

+0

java -cp project/boot/scala-2.7.7/lib/scala-library.jar :. -jar target/scala_2.7.7/test_2.7.7-1.0.jar Hi # Non funziona. –

+0

Non è possibile mescolare -cp e -jar con l'eseguibile java. Includi il tuo test_2.7.7-1.0.jar nel classpath. Se sei su Windows, il separatore è; not: Quindi, prova: java -cp project/boot/scala-2.7.7/lib/scala-library.jar: target/scala_2.7.7/test_2.7.7-1.0.jar Hi – Synesso

0

Non so quale versione di SBT si sta utilizzando, o quello che di impostazione progetto che ho usato , ma normalmente il tuo file hw.scala dovrebbe essere collocato nella directory src/main/scala per trovarlo da sbt. Inoltre, come rilevato da synesso, lo scala runtime sembra essere assente. Normalmente sbt li scaricherà solo quando si crea un nuovo progetto. ho appena provato con SBT 0.7.3 in un progetto Fres, e questo funziona:

 
$ sbt 
Project does not exist, create new project? (y/N/s) y 
Name: test 
Organization: test 
Version [1.0]: 
Scala version [2.7.7]: 
sbt version [0.7.3]: 
Getting Scala 2.7.7 ... 
:: retrieving :: org.scala-tools.sbt#boot-scala 
    confs: [default] 
    2 artifacts copied, 0 already retrieved (9911kB/26ms) 
Getting org.scala-tools.sbt sbt_2.7.7 0.7.3 ... 
:: retrieving :: org.scala-tools.sbt#boot-app 
    confs: [default] 
    15 artifacts copied, 0 already retrieved (4023kB/25ms) 
[success] Successfully initialized directory structure. 
[info] Building project test 1.0 against Scala 2.7.7 
[info] using sbt.DefaultProject with sbt 0.7.3 and Scala 2.7.7 

> exit 

$echo 'object Hi { def main(args: Array[String]) { println("Hi!") } }' > src/main/scala/hw.scala 

> sbt 
[info] Building project test 1.0 against Scala 2.7.7 
[info] using sbt.DefaultProject with sbt 0.7.3 and Scala 2.7.7 
> run 
Hi! 

> package 
[info] 
[info] == compile == 
[info] Source analysis: 0 new/modified, 0 indirectly invalidated, 0 removed. 
[info] Compiling main sources... 
[info] Nothing to compile. 
[info] Post-analysis: 2 classes. 
[info] == compile == 
[info] 
[info] == package == 
[info] == package == 
[success] Successful. 

+0

Ho creato utilizzando scratch project - s in (y/N/s). Usando il nuovo sbt. Ha scaricato scala stessa. –

Problemi correlati