SBT 项目刷新失败 [IntelliJ、Scala、SBT]

Posted

技术标签:

【中文标题】SBT 项目刷新失败 [IntelliJ、Scala、SBT]【英文标题】:SBT project refresh failed [IntelliJ, Scala, SBT] 【发布时间】:2017-03-22 17:07:23 【问题描述】:

每当我尝试在 IntelliJ 中启用自动导入时,它总是给我这个错误:

SBT 'Example' project refresh failed

Error while importing SBT project:
...
[warn] ==== public: tried
[warn]   https://repo1.maven.org/maven2/org/scalatest/scalatest_2.12/2.2.6/scalatest_2.12-2.2.6.pom
[info] Resolving org.scala-lang#scala-compiler;2.12.0 ...
[info] Resolving org.scala-lang#scala-reflect;2.12.0 ...
[info] Resolving org.scala-lang.modules#scala-xml_2.12;1.0.5 ...
[info] Resolving jline#jline;2.14.1 ...
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: org.scalatest#scalatest_2.12;2.2.6: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn] 
[warn]  Note: Unresolved dependencies path:
[warn]      org.scalatest:scalatest_2.12:2.2.6 (/Users/sarahbaka/Desktop/Scala/Example/build.sbt#L7-8)
[warn]        +- default:example_2.12:1.0
[trace] Stack trace suppressed: run 'last *:update' for the full output.
[trace] Stack trace suppressed: run 'last *:ssExtractDependencies' for the full output.
[error] (*:update) sbt.ResolveException: unresolved dependency: org.scalatest#scalatest_2.12;2.2.6: not found
[error] (*:ssExtractDependencies) sbt.ResolveException: unresolved dependency: org.scalatest#scalatest_2.12;2.2.6: not found
[error] Total time: 4 s, completed 08-Nov-2016 22:24:34</pre><br/>

我已经安装了 JetBrains Scala 插件,然后打开了一个包含 SBT 构建的目录并重置/重新启动了我的缓存(文件 -> 使缓存无效/重新启动)。但它仍然不起作用!有谁知道为什么?

【问题讨论】:

【参考方案1】:

您的最大依赖项配置错误。您希望为 Scala 2.12 发布最新的 2.6 版。没有这样的组合,因此您的构建失败。如果您查看 Scala 2.12 可用的 scalatest 版本,这里是link。如您所见,它只有 3.0.0 版本。因此,您有 3 个选项(这些是您需要在 build.sbt 文件中进行的更改):

    将您的最新版本更新到 3.0.0:libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.0" % Test 将您的 Scala 版本降级到 2.11:scalaVersion := "2.11.8" 以上两者

我想说现在使用 Scala 2.12 还为时过早,因为它在几天前才发布,而且还没有发布所有的依赖项。 Scala 主要版本(2.11 与 2.12 是 Scala 的主要版本升级)不是二进制兼容的,因此您不能在使用另一个 Scala 版本的项目中使用使用另一个版本编译的库。

同时,我会选择 scalatest 3.0.0 版本,因为它是稳定版本。所以总而言之,我现在会选择选项 3,即使选项 1 和 2 会以不同的方式解决这个特定问题。

【讨论】:

以上是关于SBT 项目刷新失败 [IntelliJ、Scala、SBT]的主要内容,如果未能解决你的问题,请参考以下文章

Intellij 编译失败:“已定义为”

IntelliJ 14 - 创建/导入 Scala / SBT 项目

Intellij 无法导入 SBT 项目

IntelliJ 中 SBT 项目的未解析依赖路径

尝试在 Intellij 中打开 sbt 项目时出现“sbt 启动器不存在”

带有 Intellij 的 Gradle 6 - 刷新失败