Scala Eclipseプラグインjava.lang.ClassNotFoundException.
-
13-12-2019 - |
質問
私はEclipseバージョンを使用しています:3.7.2 Eclipse 2.1.0.nightly-2_09-201203121521521-6J8582E。 Javaバージョンは1.6.0_31です。 OSはUbuntu 11.10です。
この問題に対する解決策を探しましたが、まだ見つけられませんでした。私は逃したという明白な答えがないことを願っています。
私はこのクラスを持っています(パッケージ):
package model.x.y
import org.scalatest.FunSuite
import org.junit.runner.RunWith
import org.scalatest.junit.JUnitRunner
@RunWith(classOf[JUnitRunner])
class GibberishTestSuite extends FunSuite {
test("Check Gibberish") {
assert("blah" === "blah")
}
}
.
グレードルピーとソースパスはこのようになります(パッケージがディレクトリ階層と一致しないことに注意してください):
.../src/test/scala/model/GibberishTest.scala
.
EclipseとGradleは、対応するクラスファイルを生成します。
bin/model/x/y/GibberishTestSuite.class
build/classes/test/model/x/y/GibberishTestSuite.class
.
これは卒業を通して細かく運ばれます、しかし私がEclipseで走ろうとしたとき、私は
Class not found model.GibberishTestSuite
java.lang.ClassNotFoundException: model.GibberishTestSuite
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
.
パッケージを
に変更した場合package model
.
ディレクトリ階層とパッケージ名がに一致するように、Eclipseで単体テストを実行できます。 Scalaでは、パッケージ構造とディレクトリ構造が一致しないように合います。ただし、ミスマッチはEclipseまたはPluginを混同しているようです。
私は何か悪いことをしていますか?私はいくつかの構成ニュアンスがありませんか?このScala言語機能はEclipseではサポートされていませんか?ある時点でサポートされますか?
ありがとうございました。
解決
これは、スカラ/スカライド問題ではなくEclipse(JDT)の問題です。
Eclipseに対して発生したバグがありました(パッケージエクスプローラツリーが宣言されたパッケージを一致させる)、しかし基本的に、Eclipseは階層がパッケージ名と一致すると想定しています。これは最終的にはScala-IDEで固定されますが、JDTへの依存関係を削除するには、モデルを変更する必要があります。これを修正したい場合は、上記の問題に投票を追加することをお勧めします。