NoClassDefFoundError beim Ausführen der Scala-JAR-Datei

9

Ich habe eine kleine Anwendung mit RemoteActors, und ich möchte daraus eine JAR-Datei machen. Wenn ich versuche, es auszuführen, erhält es diese Ausnahme:

%Vor%

Ich habe scala-library.jar in meine JAR-Datei aufgenommen und befindet sich im Klassenpfad. Andernfalls würde Java aufhören, die Klasse ScalaObject zu finden.

    
laci37 15.12.2011, 21:20
quelle

2 Antworten

1

Das Problem war ein Versionskonflikt zwischen dem Scala-Plugin auf Eclipse und der installierten Scala-Version. actors / Combinators.scala erschien in 2.8, und das Eclipse-Plugin war 2.8, aber ich habe 2.7.7 scala-library.jar

aufgenommen     
laci37 22.12.2011, 12:37
quelle
5

Java behandelt "jar in einem jar" nicht. Der Standardklassenlader kann Klassen nicht auf diese Weise laden.

Von Ihrem Stack-Trace aus sieht es so aus, als ob Sie das ausführbare jar- & gt; export- & gt; Es soll einen speziellen Classloader beinhalten, der jar in jar lädt, aber es scheint nicht zu funktionieren.

Ich nehme an, dass etwas schief gelaufen ist, wenn man das Glas gebaut hat, oder es wird dadurch verwirrt, dass scala sowohl in Ihrem Glas als auch in Ihrem Klassenpfad enthalten ist. Sie könnten dies erneut versuchen, indem Sie "Bibliotheken in jar extrahieren" anstatt "Bibliotheken in jar verpacken". Sie könnten es ohne Scala auf dem Klassenpfad versuchen.

Falls dies nicht möglich ist, gibt es andere Optionen, wenn Sie ein einzelnes lieferbares Glas haben möchten:

  • Sie können alle Gläser, auf die Sie angewiesen sind, entpacken und sie mit Ihren kompilierten Klassen neu packen (sollte sein, was "extract" oben tut). Mavens Schatten Plugin kann dabei helfen.

  • Sie können eine andere Lösung verwenden, die eine Klassenladerimplementierung bereitstellt, die verschachtelte Jars laden kann, wie OneJar

Ich hoffe, das ist nützlich, wenn Sie mehr Hilfe benötigen, müssen Sie genau beschreiben, welche Schritte Sie unternehmen, um dieses Glas herzustellen, und wahrscheinlich hilft auch die Ausgabe von "jar tvf myjar.jar".

    
Brian Smith 16.12.2011 20:25
quelle