web-dev-qa-db-fra.com

exécuter des applications scala avec Java -jar

J'ai eu quelques problèmes avec le Java. Vérifiez-le.

sebastian@sebastian-desktop:~/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, d'accord, mais qu'en est-il:

sebastian@sebastian-desktop:~/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 pourquoi le premier fonctionne et pas le 2ème? Comment puis-je ma scala ??

Merci d'avance, mon frère.

32
paintcan

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

Manuel Java:

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

Vous pouvez définir les dépendances de chemin de classe dans les métadonnées Manifest .

Le moyen le plus simple de démarrer votre application consiste à utiliser les scripts scala:

scala -classpath target/scaaaaaaaaala-1.0.jar scaaalaaa.App Hello World!
37
Thomas Jung

Simplement en cours d'exécution

scala scaaaaaaaaala-1.0.jar 

travaille pour moi avec 2.11.6

4
hgrey

Pour un jar exécutable, le classpath doit être dans le manifeste du jar. Pour obtenir de l'aide à cet égard, parcourez les réponses à Stackoverflow: Comment créer un fichier jar exécutable avec des fichiers jar de dépendance .

4
Don Roby

Vous trouverez ci-dessous le moyen d'exécuter le fichier exécutable Scala.

  • Scala doit être installé sur votre système.

  • Ici en premier donnera le chemin et le nom du pot

  • Si votre code nécessite un fichier jar de dépendance, conservez tous les fichiers jar dans un répertoire et indiquez le chemin de cette commande in, comme ci-dessous après le ":".

  • Enfin, donnez votre nom de classe/objet.

scala -cp "/your/jar/path/jar_name.jar:/your/dependency/jar/path/*" SampleCode

0
Nilesh Shinde