it-swarm.com.de

ausführen von Scala-Apps mit Java-Jar

Ich habe einige Probleme mit Java. Hör zu.

[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!

Das ist cool, richtig, aber wie wäre es damit:

[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

Was zum Teufel? Irgendeine Idee, warum das erste Werk funktioniert und nicht das 2.? Wie kriege ich meine Scala?

Vielen Dank im Voraus, Bruder.

32
paintcan

Wenn Sie -jar definieren, wird der -classpath ignoriert:

Java Handbuch:

-jar Wenn Sie diese Option verwenden, ist die JAR-Datei die Quelle aller Benutzer Klassen und andere Benutzerklassenpfad Einstellungen werden ignoriert.

Sie können die Klassenpfadabhängigkeiten in den Metadaten Manifest definieren.

Der einfachste Weg, Ihre App zu starten, ist die Verwendung der Scala-Skripts:

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

Einfach laufen

scala scaaaaaaaaala-1.0.jar 

arbeitet für mich mit 2.11.6

4
hgrey

Bei einem ausführbaren jar sollte der Klassenpfad im Manifest des jar enthalten sein. Hilfe hierzu finden Sie in den Antworten zu Stackoverflow: So erstellen Sie eine ausführbare Dose mit Abhängigkeits-Dosen .

4
Don Roby

Im Folgenden wird die Ausführung des Scala Executable Jar beschrieben

  • Wir benötigen Scala in Ihrem System.

  • Hier wird zuerst der Jar-Pfad und der Jar-Name angegeben

  • Wenn für Ihren Code ein Abhängigkeits-Jar erforderlich ist, belassen Sie alle JAR-Dateien in einem Verzeichnis und geben Sie einen Pfad für diesen in-Befehl wie folgt hinter dem ":" an.

  • Zum Schluss geben Sie Ihren Klassen-/Objektnamen an.

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

0
Nilesh Shinde