scalatest 的“未知工件。未解决或索引”错误
Posted
技术标签:
【中文标题】scalatest 的“未知工件。未解决或索引”错误【英文标题】:"Unknown artifact. Not resolved or indexed" error for scalatest 【发布时间】:2017-05-13 09:09:56 【问题描述】:我正在尝试修改 build.sbt 文件以在 IntelliJ IDEA 中添加 scalatest 依赖项。控制台中没有错误日志,但是当我将鼠标悬停在下划线上时,我得到了 Unknown artifact. Not resolved or indexed.
。我该如何解决这个问题?非常感谢!
这是我用来添加依赖的那一行:libraryDependencies += "org.scalatest" % "scalatest_2.11" % "3.0.1" % "test"
这是我的屏幕的样子:
【问题讨论】:
在命令行中运行sbt compile
是否有效?我试过了,它对我有用。不过,我没有使用 IntelliJ。
是的 compile
有效,但 scalatest 用于测试对吗?我在图书馆没看到。我对 scala 很陌生..
@JustinKaeser 我试过了,但控制台只显示新行。没有消息什么的。我正在使用 Mac。有什么区别吗?
对不起,我的意思是在 IntelliJ 中按 Alt+Enter 在出现警告的行并选择“更新项目解析器的索引”快速修复,然后选择“本地缓存”索引并单击“更新”
快速修复对我不起作用。本地常春藤仓库几秒钟前更新,旧工件仍显示为“未知工件”。 Analyze > Inspect Code ...
也有同样的问题
【参考方案1】:
如果你刚刚添加了依赖,它可能还没有被下载。刷新/重新导入项目以执行此操作。
如果已经下载,在 IntelliJ 中按 Alt+Enter 在出现警告的行并选择“更新项目解析器的索引”快速修复,然后选择“本地缓存”索引并单击“更新”。
您可以通过检查“更新”列中的日期来验证更新是否有效:
【讨论】:
谢谢! @JustinKaeser 你知道当警告消失并且不再有下划线时如何调出这个窗口吗? 它位于任何 *-build 模块的 SBT 选项卡上的项目设置/模块下的文件/项目结构对话框中。请注意,不包含正确索引的远程存储库存在一个问题,它们永远不会正确更新。 对于添加的每个依赖项build.sbt
,这仍然是 IntelliJ 中的一个错误。很烦人,希望他们能尽快解决。这里link
更新缓存后可能需要刷新项目。【参考方案2】:
这已经激怒了我几个小时了,但我想我终于部分理解了发生了什么。以上建议都不适合我。
来自 sbt 文档中的 Automatic Dependency Management:
sbt 1.3.0+ 使用 Coursier 来实现依赖管理。直到 sbt 1.3.0,sbt 已经使用 Apache Ivy 十年了。 Coursier 在保持兼容性方面做得很好,但某些功能可能特定于 Apache Ivy。在这些情况下,您可以使用以下设置切换回 Ivy:
ThisBuild / useCoursier := false
我对我的情况的解释是 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 的相关答案。看起来重建后,您可以注释掉该行(直到下一次抱怨)。 我在仅使用 ThisBuild / useCoursier = false 时收到了 java.lang.IllegalArgumentException。根据github.com/sbt/sbt/issues/5263#issuecomment-626462593 使用 Coursier for updateSbtClassifiers 确实允许 IntelliJ 进行索引,但也解决了新引入的错误【参考方案3】:我遇到了同样的问题。 File -> Invalidate Caches/Restart... 为我解决了这个问题。 在我的情况下,仅更新/刷新项目不起作用。
【讨论】:
确实如此。这就是让 2020.02 正常工作所需要的。谢谢!【参考方案4】:在我的情况下,我尝试了:
-
Alt + Enter 然后刷新项目。
更新解析器的本地缓存。
文件 -> 使缓存无效/重新启动。
以上都不起作用。因此,为了将来参考,这是我对这个问题的解决方案:
-
确保启用 Maven 集成插件,而不是更新解析器的本地缓存,而是更新从不更新的公共。
如果是新安装的 IntelliJ IDEA,此过程可能需要一些时间才能完成下载。
【讨论】:
以上是关于scalatest 的“未知工件。未解决或索引”错误的主要内容,如果未能解决你的问题,请参考以下文章
scalatest : 对象 scalatest 不是包 org 的成员