9

我正在使用 Eclipse 版本:3.7.2 和 Scala IDE for Eclipse 2.1.0.nightly-2_09-201203121521-6e8582e。Java 版本是 1.6.0_31。操作系统是 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")
  }
}

我也在使用 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 或插件感到困惑。

难道我做错了什么?我错过了一些配置的细微差别吗?eclipse 不支持这个 scala 语言功能吗?它会在某个时候得到支持吗?

谢谢你。

4

1 回答 1

7

这是一个 Eclipse (JDT) 问题,而不是 Scala/scala-ide 问题。

有一个针对 Eclipse 的错误(包资源管理器树确实匹配声明的包),但基本上,Eclipse 假定层次结构与包名称匹配。这最终将在 Scala-ide 中修复,但需要更改模型,以消除对 JDT 的依赖。如果您想解决此问题,最好将您的投票添加到上述问题。

于 2012-03-13T16:15:58.663 回答