これは一般的な問題である場合は私は謝罪するので、私はJVMの土地に新しいです。私は、OSXでsbt 0.13.13でScala(2.12)を使用しています。NoClassDefFoundError with sbtとscala.swing
私はGUIライブラリscala.swing
(2.10.x)に依存する小さなアプリケーションを開発しています。私はすぐにランタイムの問題に遭遇し、サンプルコード(http://otfried.org/scala/index_28.html)で直ちに実行しました。
[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
は、ScalaのSTDLIBでクラス/トレイトのように見える)
SOおよび他の場所で読んで、この種のことを示唆している:私は主要なスタックトレースを取得しsbt run
を起動すると、具体的に
、コンパイル時に存在するコードを実行時に後で見つけることができない場合、例外が発生します。確かに、コードはうまくコンパイルされますが、問題が発生したコードを実行しているときだけです。
私が見つけたすべての提案は、これらの問題を解決するためにclasspath
を調整することです。 sbt
コンソールが信じにある場合は、私のコンパイル時と実行時にクラスパスが同一である:だから
> 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
、私は法医学行き詰まりのビットで自分自身を見つけます。次に見たいところについては、何か提案をいただければ幸いです。わかりやすくするために、これまでのところscala.swing
が発生しています。 Scalaには問題のない小さなプロジェクトがいくつかあります。困ったことは、 "欠けている"クラスはスカラーの標準ライブラリのようです。
Scala 2.12で 'scala.swing'の2.10.xバージョンを使用しようとすると、互換性のないバージョンが原因である可能性があります。 'scala.swing'の2.12バージョンを使用してください –
ほとんどのScalaライブラリは、後方互換性も前方互換性もありません。 –
2.10.xは' scala.swing'の内部バージョン化を参照していると思います。 https://github.com/scala/scala-swingにあるドキュメントは、swing 2.xブランチがscala用に正しいものであることを示しています。2.12 – cmw