Scala导入无法正常工作 - 对象数据库不是com.me.project.controllers.com.me.project.database包的成员

Nei*_*los 37 scala

尝试在scala中导入时出现问题.该对象Database存在于com.me.project.database但当我尝试导入它时:

import com.me.project.database.Database
Run Code Online (Sandbox Code Playgroud)

我收到错误:

object Database is not a member of package com.me.project.controllers.com.me.project.database
Run Code Online (Sandbox Code Playgroud)

有什么想法是什么问题?

编辑:

值得一提的是导入是在包下的Application.scala文件中com.me.project.controllers,我无法弄清楚为什么它会将导入追加到当前的包中,怪异的......

编辑2:

所以使用:

import _root_.com.me.project.database.Database
Run Code Online (Sandbox Code Playgroud)

工作如下所述.但它应该没有_root_?到目前为止的评论似乎表明它应该.

答案:

所以事实证明,我只需要清理项目以使导入正常工作,同时使用:

import _root_.com.me.project.database.Database

import com.me.project.database.Database
Run Code Online (Sandbox Code Playgroud)

是有效的解决方案 Eclipse刚刚感到困惑.

fra*_*cca 22

进口可以是相对的.这是你唯一的进口吗?小心其他进口如

import com.me

最终,这应该修复它,然后你可以尝试找到更多关于它:

import _root_.com.me.project.database.Database


Bun*_*nyk 18

在我的情况下,我还需要检查未找到作为包成员的对象是否已成功编译.


r90*_*90t 13

在我的情况下,我不得不跑sbt clean.

  • 你可以通过运行`sbt clean compile`而不是`sbt clean && sbt compile来链接sbt任务. (2认同)

Rik*_*ard 11

我意识到这个问题已经有了一个可接受的答案,但由于我遇到了同样的问题,但由于原因不同,我想我会添加一个答案.

我有一堆相互依赖的项目,突然需要根导入才能编译.原来,我在一个文件中复制了包声明.这引起了某种连锁反应,很难找到问题的根源.

总结一下,我有

package foo.bar
package foo.bar
Run Code Online (Sandbox Code Playgroud)

在文件的顶部而不是只是

package foo.bar
Run Code Online (Sandbox Code Playgroud)

希望这可以节省一些非常繁琐的错误搜索.


小智 5

我遇到过类似的问题,IntelliJ 在从同一项目导入一个文件时显示错误。

在我的案例中,什么没有解决问题:

  1. 添加_root_导入语句
  2. sbt清洁
  3. 重新启动机器

真正解决问题的是什么:

  1. 主菜单=>选择文件=>单击无效缓存/重新启动=>弹出对话=>单击无效缓存并重新启动。

我在 macOS mojave 10.14.6 上使用 IDEA (2019.2.2 Ultimate Edition)