9

Eclipse 2.1.0.nightly-2_09-201203121521-6e8582e の Scala IDE で Eclipse バージョン: 3.7.2 を使用しています。Java のバージョンは 1.6.0_31 です。OSはUbuntu11.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")
  }
}

私もgradleを使用しており、ソースパスは次のようになります(パッケージがディレクトリ階層と一致しないことに注意してください):

.../src/test/scala/model/GibberishTest.scala

Eclipse と gradle は、対応するクラス ファイルを生成します。

bin/model/x/y/GibberishTestSuite.class
build/classes/test/model/x/y/GibberishTestSuite.class

これはgradleを介して正常に実行されますが、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またはプラグインを混乱させるようです。

私は何か間違ったことをしていますか?構成のニュアンスが不足していますか? このscala言語機能はEclipseでサポートされていませんか? ある時点でサポートされますか?

ありがとうございました。

4

1 に答える 1

7

これは、Scala/scala-ide の問題ではなく、Eclipse (JDT) の問題です。

Eclipse に対してバグが発生しました ( Package Explorer ツリーは宣言されたパッケージと一致します) が、基本的に、Eclipse は階層がパッケージ名と一致することを前提としています。これは最終的に Scala-ide で修正される予定ですが、JDT への依存を取り除くためにモデルを変更する必要があります。これを修正したい場合は、上記の問題に投票することをお勧めします。

于 2012-03-13T16:15:58.663 に答える