【问题标题】:Object is not a member of package error when sharing modules across multiple SBT project跨多个 SBT 项目共享模块时,对象不是包的成员错误
【发布时间】:2018-07-24 12:14:17
【问题描述】:

我有一个 sbt 模块,在 io.myapp.foo 包中定义了一个 fooObject。即可以通过io.myapp.foo.fooObject访问对象

然后我通过 sbt publishLocal 将其发布到我的本地 Ivy 存储库

在另一个 Sbt 项目中,我包含了这个 foo 对象模块

然后我尝试在包io.myapp.bar.barObject 中的另一个类中使用fooObject。尽管我的 IDE 可以访问 io.myapp.foo.fooObject,因为我获得了自动完成功能并且我没有收到语法错误,但是当我尝试编译时,我收到了错误:

Error:(19, 46) object foo is not a member of package io.myapp val schemaContent: String = fooObject.someValue

不知道为什么 foo 只是包名称中的一个路径时被称为对象。

我不知道为什么会出现此编译错误。有什么想法吗?

编辑:如果我进行 SBT 编译,它会编译,但是当我运行测试时,我会收到上述编译错误。这让它变得陌生

Edit2:似乎这是 Intellij 自己绊倒的情况。当我从 sbt 运行测试时,一切都通过了。仅当我从 Intellij 运行测试时才会收到编译错误

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    好吧,这最终导致太多事情同时出错了......这让我更难弄清楚为什么我会出现这种意外行为......

    所以我有一个以前版本的模块已经发布到我本地的常春藤,然后我添加了要共享的对象并尝试再次发布,但失败了,我没有注意提到发布的日志没有成功,因为它无法覆盖现有的已发布工件。

    在另一个发生编译错误的项目中,我正在从控制台运行编译,没有重新加载依赖项。

    所以确保在重新发布之前删除并确保我重新加载依赖项解决了我的问题。

    希望这对其他人有所帮助。

    编辑 碰巧当我从 Intellij 运行测试时,我仍然收到编译错误。所以我不得不再次重新导入项目..即来自File -> project structure -> module -> (delete and then readd) 之后,我现在可以从intellij 运行测试。

    同时谈论多个不起作用/出错的事情!完美的混乱秘诀!

    【讨论】:

      猜你喜欢
      • 2015-02-17
      • 2020-10-27
      • 2015-12-12
      • 1970-01-01
      • 2020-04-20
      • 2019-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多