IntelliJ无法导入sbt项目

时间:2017-12-07 14:21:48

标签: scala intellij-idea import sbt

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

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

我删除了.idea目录和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) 

14 个答案:

答案 0 :(得分:58)

我在这里解决了以下信息的同步问题: https://youtrack.jetbrains.com/issue/SCL-13024

关键信息是"似乎sbt正在尝试重新解析其来源'和' docs'对于根本不可用的sbt插件。如果要下载的属性"图书馆来源"和" sbt来源"被禁用,然后倾倒结构的时间从永远减少了#39;不到1分钟。"

也就是说,在IntelliJ IDEA中,清除复选框"图书馆来源"在"项目级别设置"用于IDEA首选项中的构建工具sbt。如下图所示:

enter image description here

答案 1 :(得分:12)

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

答案 2 :(得分:6)

我还没有找到一种方法在IntelliJ Idea CE 2017.3中完成这项工作,所以我已经恢复到CE 2017.2.5

答案 3 :(得分:4)

我遇到了同样的问题!我删除目录〜/ .sbt / 0.13,然后就可以了。您可以删除您使用的sbt目录。

答案 4 :(得分:4)

对我有用的是增加IntelliJ内部SBT的内存。在我的Mac上:首选项 - >构建,执行,开发 - > SBT 然后改变"最大堆大小"从768MB到2048MB,几分钟后一切都成功导入。

答案 5 :(得分:4)

IntelliJ似乎限制了已经很慢的sbt update的效率。我建议改用sbt-coursier。它是专门为缩短依赖关系更新时间而编写的,在我参与的一个大型项目中,它使依赖关系更新时间缩短了大约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"

有关该错误的更多信息,请参见coursier issue #450

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

答案 6 :(得分:1)

自定义SBT版本适合我。

  

IntelliJ IDEA首选项 - >构建,执行,部署 - >构建工具 - > sbt - >发射

选择自定义

custom sbt screenshot

答案 7 :(得分:1)

有一个较旧的签出项目导致此问题。常规的rm -rf .idea是否重新导入,但一直卡住。尝试了各种各样的方法,但最终为我解决此问题时,不仅删除了顶级target文件夹,而是删除了

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

接下来的打开/导入操作非常顺利。 (分别是2018.1.5、2018.1.6和2018.2 RC。)

答案 8 :(得分:1)

对我来说,只需检查use sbt shell for both build and imports即可。

答案 9 :(得分:0)

升级intelliJ到2017.3后,我遇到了同样的问题 但它现在工作正常。

我认为intelliJ无法将'无代理'选项传递给sbt。 所以,我添加了

  

-Dhttp.nonProxyHosts = “主机1 |主机2”

文件>中的

选项设置>构建,执行,部署> sbt> VM参数

答案 10 :(得分:0)

简单地取消选中' sbt来源'为我做了诀窍

答案 11 :(得分:0)

我也面临这个问题。以下两种配置对我有用。我尽力在许多新的sbt项目中确认此设置,但一切正常。

(1)取消选中“项目级别设置”下“构建工具” sbt中的“库源”     IDEA偏好 (2)-Dhttp.nonProxyHosts =“ host1 | host2”     文件>设置>构建,执行,部署> sbt> VM参数中的选项

答案 12 :(得分:0)

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

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

Refresh sbt project位于“构建同步”窗口的此角-突出显示如下: Refresh sbt project

答案 13 :(得分:0)

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

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

也许如果杀死IntelliJ IDEA并且没有人会释放锁定文件,则可以在手动删除锁定文件后解决该问题