【发布时间】:2014-02-11 12:09:06
【问题描述】:
尝试在 scala 中导入时遇到问题。对象Database 存在于com.me.project.database 下,但是当我尝试导入它时:
import com.me.project.database.Database
我得到错误:
object Database is not a member of package com.me.project.controllers.com.me.project.database
任何想法是什么问题?
编辑:
值得一提的是,导入是在 com.me.project.controllers 包下的 Application.scala 文件中,但我不明白为什么它会将导入附加到当前包,奇怪...
编辑 2:
所以使用:
import _root_.com.me.project.database.Database
如下所述。但是如果没有_root_,它应该可以工作吗?到目前为止的 cmets 似乎表明应该这样做。
回答:
事实证明,我只需要清理项目以使导入正常工作,同时使用两者:
import _root_.com.me.project.database.Database
import com.me.project.database.Database
是有效的解决方案。 Eclipse 刚刚弄糊涂了。
【问题讨论】:
-
您能否提供一个显示此编译错误的最小示例?
-
错误是从哪一行报告的——使用点还是导入点?如果从导入中,数据库是否可能不在您的类路径中?然后,scalac 将无法猜测它是绝对包路径还是相对包路径,并且在生成错误消息时可能会猜错。
-
它来自导入,但数据库类在我的项目中,它不是另一个项目或外部库,所以我不应该有任何类路径问题(我来自Java 视角,我刚接触 Scala 2 天)。
-
伙计,晚了 5 年,我得到了这篇文章的帮助,遇到了完全相同的问题。我只想指出,标题有点……不好,伙计。我用一般的谷歌搜索找不到这个——我试了很多次,半个小时才到这里。这个问题非常好,有助于澄清一个非常随机的问题——我会继续努力让它工作,而不是重新启动该死的 SBT 会话。请给这个更多的可见性 - 将标题改进为“导入在导入中预先添加当前包命名空间”之类的内容。..
-
@LucasLima 这个问题有 39k 的浏览量,所以有些人会发现它,但我同意你的观点 ;) 改变了
标签: scala