Ich bin neu in JVM Land, also entschuldige ich mich, wenn das ein häufiges Problem ist. Ich benutze Scala (2.12) mit sbt 0.13.13 unter OSX.NoClassDefFoundError mit sbt und scala.swing
Ich arbeite an einer kleinen App, die von der GUI-Bibliothek scala.swing
(2.10.x) abhängt. Ich bin fast augenblicklich mit dem Beispielcode (http://otfried.org/scala/index_28.html) auf ein Laufzeitproblem gestoßen.
Insbesondere wenn sbt run
Aufruf erhalte ich ein stacktrace führende mit:
[error] (run-main-0) java.lang.NoClassDefFoundError: scala/Proxy$class
java.lang.NoClassDefFoundError: scala/Proxy$class
at scala.swing.Window.<init>(Window.scala:25)
at scala.swing.Frame.<init>(RichWindow.scala:75)
at scala.swing.MainFrame.<init>(MainFrame.scala:19)
(Proxy
erscheint eine Klasse/Merkmal in der scala stdlib zu sein)
Lesen auf SO und anderswo schon sagt, diese Art von Eine Ausnahme wird normalerweise ausgegeben, wenn zur Kompilierungszeit vorhandener Code zur Laufzeit nicht zur Laufzeit gefunden werden kann. In der Tat kompiliert der Code einfach gut, es ist nur, wenn der Code ausgeführt wird, dass das Problem auftritt.
Alle Vorschläge, die ich gefunden habe, sind Ihre classpath
in Einklang zu bringen, um diese Probleme zu lösen. Wenn jedoch die sbt
Konsole geglaubt, meine Compile-Zeit und Laufzeit CLASSPATHs sind identisch:
> show compile:fullClasspath
[info] * Attributed(/Users/chris/Projects/thing2/target/scala-2.12/classes)
[info] * Attributed(/Users/chris/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.12.1.jar)
[info] * Attributed(/Users/chris/.ivy2/cache/org.scala-lang/scala-swing/jars/scala-swing-2.10.6.jar)
[success] Total time: 0 s, completed Dec 24, 2016 7:01:15 PM
> show runtime:fullClasspath
[info] * Attributed(/Users/chris/Projects/thing2/target/scala-2.12/classes)
[info] * Attributed(/Users/chris/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.12.1.jar)
[info] * Attributed(/Users/chris/.ivy2/cache/org.scala-lang/scala-swing/jars/scala-swing-2.10.6.jar)
[success] Total time: 0 s, completed Dec 24, 2016 7:01:19 PM
Also, ich mich an etwas forensischen Sackgasse finden. Irgendwelche Vorschläge, wohin man als nächstes schaut, würden sehr geschätzt. Der Übersichtlichkeit halber ist dies bisher nur mit scala.swing
geschehen. Ich habe ein paar andere kleine Projekte in Scala, die keine Probleme hatten. Was verblüffend ist, ist die "fehlende" Klasse, die als Standard-Bibliotheksmaterial erscheint.
Wenn Sie versuchen, die 2.10.x-Version von "scala.swing" mit Scala 2.12 zu verwenden, liegt das Problem wahrscheinlich an inkompatiblen Versionen. Verwenden Sie die 2.12-Version von "scala.swing" –
Ich denke, die meisten Scala-Bibliotheken sind nicht rückwärts oder vorwärts kompatibel –
Die 2.10.x bezieht sich auf die interne Versionierung von "scala.swing", denke ich. Die Dokumentation unter https://github.com/scala/scala-swing gibt an, dass der 2.x-Zweig für swal der richtige ist, der für scala verwendet werden kann. 2.12 – cmw