2012-03-13 82 views
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。Scala eclipse插件java.lang.ClassNotFoundException

我已经寻找解决这个问题的方法,但我还没有找到。我希望没有明显的答案,我错过了。

我有这个类(注意包):

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和摇篮生成coresponding类文件:

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语言功能吗?它会在某些时候得到支持吗?

谢谢。

+0

我注意到了同样的事情。我认为它只是不被Eclipse构建支持。 – 2012-03-13 16:15:32

回答

7

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

发生了一个针对Eclipse的错误(Package Explorer tree does match declared package),但基本上Eclipse假定层次结构匹配软件包名称。这将最终在Scala-ide中得到解决,但该模型需要进行更改,以消除对JDT的依赖。如果你想修正这个问题,最好将你的投票加入上述问题。

+0

没有工作? – zinking 2015-08-05 14:34:22