scalatest的"未知工件.未解析或编入索引"错误

use*_*606 34 scala intellij-idea maven sbt scalatest

我正在尝试修改build.sbt文件以在IntelliJ IDEA中添加scalatest依赖项.控制台中没有错误日志,但是Unknown artifact. Not resolved or indexed.当我将鼠标悬停在下划线上时,我得到了一个错误日志 .我该如何解决这个问题?提前谢谢了!

这是我用来添加依赖项的行: libraryDependencies += "org.scalatest" % "scalatest_2.11" % "3.0.1" % "test"

这是我的屏幕看起来像: 在此输入图像描述

Duf*_*ffJ 37

这已经让我愤怒了几个小时,但我想我终于部分了解了发生了什么。以上建议都不适合我。

来自sbt 文档中的自动依赖管理

sbt 1.3.0+ 使用 Coursier 来实现依赖管理。直到 sbt 1.3.0,sbt 已经使用 Apache Ivy 十年了。Coursier 在保持兼容性方面做得很好,但某些功能可能是特定于 Apache Ivy 的。在这些情况下,您可以使用以下设置切换回 Ivy:

ThisBuild / useCoursier := false
Run Code Online (Sandbox Code Playgroud)

我对我的情况的解释是 IntelliJ 没有对 Coursier 的适当支持(这很奇怪),但是 sbt 使用 Coursier 下载依赖项,然后 IntelliJ 找不到它们,因为它在我的常春藤缓存中查找。脸掌

我使用的是 OSX、IntelliJ IDEA Ultimate 2019.2.3、Scala 2.12.8、JDK8(因为我使用的是 Spark)和 sbt 1.3.3。

将以上行添加到我的build.sbt文件中解决了我的问题。我的~/.ivy2/cache目录现在是最新的。Coursier 将其缓存存储在~/Library/Caches/Coursier/v1( docs ) 中,但我似乎找不到让 IntelliJ 使用 Coursier 缓存来解决依赖关系的方法。欢迎比我更了解 sbt 的人提供有关该主题的更多信息!

  • 这是我在 2020 年版本 2020.2 的相关答案。看起来在重建之后,您可以注释掉该行(直到下次它抱怨)。 (6认同)

Jus*_*ser 36

如果您刚刚添加了依赖项,则可能尚未下载.刷新/重新导入项目以执行此操作.

如果已经下载,请在带有警告的行上的IntelliJ中按Alt + Enter并选择"更新项目解析器索引"quickfix,然后选择"本地缓存"索引并单击"更新".

您可以通过检查"已更新"列中的日期来验证更新是否有效:

解析器索引


小智 10

我有同样的问题.文件 - >无效缓存/重新启动...为我解决了问题.
只是更新/刷新项目在我的情况下不起作用.


小智 5

在我的情况下,我试过:

  1. 按Alt + Enter然后刷新项目.
  2. 更新解析器的本地缓存.
  3. 文件 - >使高速缓存/重新启动无效.

以上都没有奏效.因此,为了将来参考,这是我对此问题的解决方案:

  1. 确保启用Maven集成插件,而不是更新解析器的本地缓存,更新未更新的公共.

如果它是新安装的IntelliJ IDEA,则此过程可能需要一些时间才能完成下载.