Eclipse Scala';中国的相对包装进口

Eclipse Scala';中国的相对包装进口,eclipse,scala,import,package,Eclipse,Scala,Import,Package,我在eclipse中有一个多项目Scala工作区。我想我对Scala导入软件包的方式缺乏了解,这让我很恼火,但在花了比我愿意承认的更多的时间寻找解决方案后,我无法理解这一点。我在一个简单的2项目设置中重新创建了这个问题 项目1:com.foo.mathematics包含一个简单的向量类 包含一个文件: package com.foo.mathematics class Vector2D(x : Double, y : Double) { def length = math.s

我在eclipse中有一个多项目Scala工作区。我想我对Scala导入软件包的方式缺乏了解,这让我很恼火,但在花了比我愿意承认的更多的时间寻找解决方案后,我无法理解这一点。我在一个简单的2项目设置中重新创建了这个问题

项目1:com.foo.mathematics包含一个简单的向量类

包含一个文件:

package com.foo.mathematics    

class Vector2D(x : Double, y : Double) {



  def length = math.sqrt(x*x + y*y)

}
项目2:com.foo.analysis

package com.foo.analysis

import com.foo.mathematics.Vector2D



class Frame(xAxis : Vector2D, yAxis : Vector2D) {



}
Eclipse在导入行中显示了一个错误,我得到的错误消息是:Object mathematics不是包com.foo的成员

在大纲视图中,我的导入语句如下所示:

com.foo.analysis.<error: <none>>.Vector2D
两个都不行


我遗漏了什么?

导入com.foo.mathmatics.Vector2D和导入u root\uu.com.foo.mathmatics.Vector2D都应该可以。很可能您没有将第一个项目添加到第二个项目的生成路径(请参见上下文菜单中的
生成路径
配置生成路径
),或者在第一个项目中进行更改后需要清理第二个项目(
项目
生成清理

(另外,
mathmatics
看起来像是数学的打字错误,所以请仔细检查两个地方的名称是否相同。)

相对软件包导入不包括在内,它们只是意味着您可以这样编写:

package com.foo
package analysis
import mathmatics.Vector2D

class Frame(xAxis : Vector2D, yAxis : Vector2D) {

}

尝试清理所有项目。构建项目1,然后在项目2中删除导入行,然后尝试键入
import com.fo[CTRL-SPACE]
,是否完成?如果有,请再次键入CTRL-SPACE,它是否提供
数学
分析
?我使用了大量的root用户来修复它。谢谢。我的原始问题输入错误(凌晨2点提问的危险),但代码没有问题。在我的“real”项目中,我非常谨慎地将根导入应用于项目中每个.scala文件中的每个导入,从而解决了这个问题。经过几次清洁/构建周期后,我想我已经可以正常工作了。我偶尔要做的另一件事是从构建路径中删除依赖库,然后重新添加它。不知道为什么会有帮助,但确实如此。如果1)遵循正常的反向URL约定(看起来是这样),2)没有嵌套在其他包中的名为
com
org
的包,则不需要
\uroot
。奇怪。。。您有最新的Scala IDE(2.0 beta 11)吗?我上一次遇到像这样的依赖性问题是在很多版本之前,我有最新的Scala IDE和Eclipse版本。一旦你知道你需要做什么,
\u root\u
事情就不会太糟糕了。谢谢你的帮助。我也有同样的问题。我已尝试添加项目(在“项目”选项卡上)和类文件夹(在“库”选项卡上)。有没有其他方法可以从我缺少的另一个项目中添加类?
package com.foo
package analysis
import mathmatics.Vector2D

class Frame(xAxis : Vector2D, yAxis : Vector2D) {

}