2010-05-28 8 views
32

J'ai eu quelques problèmes avec le java. Vérifiez-le.exécuter des applications scala avec java -jar

[email protected]:~/scaaaaaaaaala$ java -cp /home/sebastian/.m2/repository/org/scala-lang/scala-library/2.8.0.RC3/scala-library-2.8.0.RC3.jar:target/scaaaaaaaaala-1.0.jar scaaalaaa.App

Hello World! 

C'est cool, juste, mais comment combat ceci:

[email protected]:~/scaaaaaaaaala$ java -cp /home/sebastian/.m2/repository/org/scala-lang/scala-library/2.8.0.RC3/scala-library-2.8.0.RC3.jar -jar target/scaaaaaaaaala-1.0.jar

Exception in thread "main" java.lang.NoClassDefFoundError: scala/Application 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:616) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
at scaaalaaa.App.main(App.scala) 
Caused by: java.lang.ClassNotFoundException: scala.Application 
at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
... 13 more 

Wat le diable? Une idée de pourquoi le premier fonctionne et pas le 2ème? Comment puis-je -jar mon scala ??

Merci d'avance, frère.

+29

+1 pour démarrer votre question SO avec "Yo Dawgs" –

Répondre

35

Si vous définissez le jar -classpath est ignoré:

Java manual:

jar Lorsque vous utilisez cette option, le fichier JAR est la source de tous les utilisateurs classes et d'autres classes d'utilisateurs Les paramètres sont ignorés.

Vous pouvez définir les dépendances de chemin de classe dans Manifest metadata.

La meilleure façon de commencer votre application utilise les scripts scala:

scala -classpath target/scaaaaaaaaala-1.0.jar scaaalaaa.App Hello World! 
+14

Je préférerais un Descartes ou Newton personnelle. :-) –

2

Il suffit de courir

scala scaaaaaaaaala-1.0.jar 

travaille pour moi avec 2.11.6