IntelliJ 不能导入 sbt 项目

我已经将 IntelliJ 从 CE 2017.2.5升级到 CE 2017.3版本,现在我无法构建 sbt 项目。构建在第一步就卡住了:

"Build: sync
MyProjName: syncing...
dump project structure from sbt"

我已经删除了。想法目录和 MyProjName/project/target目录。我在命令行中做了一个 sbt 构建,它起作用了。 然后我再次启动 IntelliJ,并试图将 MyProjName/build.sbt导入为一个项目。我也已登出/登入。这样做了好几次。导入永远不会超过这一步。

我在防火墙后面工作,但我检查了我的代理设置,它们是正确的,并且与以前的版本没有任何改变(如果这个问题很重要的话)。

如何进行故障排除/修复?

Sbt 版本是0.13.6. Scala 插件2017.3.10。

根据日志:

IDE: IntelliJ IDEA (build #IC-173.3727.127, 27 Nov 2017 09:32)
OS: Windows 7 (6.1, amd64)
JRE: 1.8.0_152-release-1024-b6 (JetBrains s.r.o)
JVM: 25.152-b6 (OpenJDK 64-Bit Server VM)
43544 次浏览

在 IntelliJ Ideas CE 2017.3中,我还没有找到一种方法来实现这个工作,所以我又回到了 CE 2017.2.5

解决这个问题的唯一方法是首先在 SBT 控制台/cmd 行中运行 sbt clean compile,然后在 IntelliJ 中刷新 SBT 项目。

我也遇到了同样的问题!我删除了目录 ~/。Sbt/0.13然后就成功了。您可以删除您使用的 sbt 目录。

对我有效的方法是增加 IntelliJ 中 SBT 的内存。在我的 Mac 上: 首选项-> 构建,执行,部署-> sbt 然后将“最大堆大小”从768MB 更改为2048MB,几分钟后所有内容都成功导入。

升级到2017.3之后,我也遇到了同样的问题 但现在好了。

我认为 intelliJ 不能通过“ 没有代理”选项给 sbt。 所以,我加了一句

- Dhttp.nonProxyHosts = “ host1 | host2”

文件 > 设置 > 构建、执行、部署 > sbt > VM 参数的选择

自定义 SBT 版本适合我。

IntelliJ IDEA 偏好设置-> 构建、执行、部署-> 构建工具-> sbt-> 启动器

选择定制

custom sbt screenshot

我在这里解决了同步问题: Https://youtrack.jetbrains.com/issue/scl-13024

关键信息是“ sbt 似乎试图重新解析根本不可用的 sbt 插件的‘ source’和‘ docs’。如果禁用了下载“ Library source”和“ sbt source”的属性,那么转储结构的时间将从“ forever”减少到不到1分钟

也就是说,在 IntelliJ IDEA,清除复选框“库来源”下的“项目级设置”为构建工具 sbt 在 IDEA 的首选项。如下图所示:

enter image description here

只要不检查“ sbt 消息来源”就可以了

有一个旧的检出项目导致了这个问题。做惯常的 rm -rf .idea + 重新导入,但它一直卡住。尝试了各种各样的事情,但当最后为我修复它不只是删除顶级 target文件夹,而是做

find . -name target -type d -exec rm -rf {} \;

接下来的开放/导入完美无缺。(这是在2018.1.5,2018.1.6和2018.2 RC。)

我也面临着这个问题。以下两种配置适合我。我试图在许多新的 sbt 项目中确认这个设置,因为它起作用了。

(1)在 创意偏好 (2)-Dhttp.nonProxyHosts = “ host1 | host2” 选项在文件 > 设置 > 构建、执行、部署 > sbt > VM 参数

IntelliJ 似乎限制了已经很慢的 sbt update的效率。我建议改用 Sbt-cousier。它是专门为提高依赖更新时间而编写的,在一个大型项目中,我参与其中,它将依赖更新时间提高了大约2个数量级。

  1. 取消选中 Preferences > Build, Execution, Deployment > Build Tools > sbt中的“使用自动导入”,以防止 IntelliJ 自动更新导入

enter image description here

  1. addSbtPlugin("io.get-coursier" % "sbt-coursier" % "1.0.3")添加到项目的 build.sbt文件中
    • 或者在 ~/.sbt/1.0/plugins/build.sbt中全局安装它
  2. 在命令行上运行 sbt update

如果您看到 [error] java.lang.NoClassDefFoundError: org/vafer/jdeb/Console,那么将以下内容添加到 ~/.sbt/1.0/sbt-coursier.sbt

import coursier.Keys._
classpathTypes += "maven-plugin"

有关该错误的更多信息,请参见 第450期快递

  1. (可选)从步骤1重新启用自动导入,因为后续的事务相关性更新可能更快。

对我来说,简单地检查 use sbt shell for both build and imports就可以了。

  • Alt F12或使用 贝壳打开 IDEA 内部的终端
  • 运行 sbt-如果这是第一次将需要一些时间。
  • 运行 clean
  • 运行 compile-它将下载您在项目中的依赖项。
  • 关闭 IDEA 项目(File-> Close Project)并再次打开它。

注意: 如果它要求在屏幕右下角导入激活 Enable auto-import,如果你不想让它一直启用(像我一样)按 Import,取消同步,然后再按 Refresh sbt project。当您尝试在同步过程中使用 import 时,它会卡在 从 sbt 转储项目结构消息中。

Refresh sbt project位于 Build Sync 窗口的这个角落——突出显示如下: Refresh sbt project

我遇到了类似的问题,但发现它与等待锁有关

  • ~/. sbt/tool/sbt.boot.lock
  • ~/. ivy2/. sbt.ivy.lock

也许如果杀死 IntelliJIDEA,没有人会释放锁文件,问题是解决后,手动删除锁文件