簡體   English   中英

IntelliJ 無法導入 sbt 項目

[英]IntelliJ Cannot Import sbt Project

我已經將 IntelliJ 從 CE 2017.2.5 升級到 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) 

我解決了以下信息的同步問題: https : //youtrack.jetbrains.com/issue/SCL-13024

關鍵信息是“似乎 sbt 正在嘗試重新解析根本不可用的 sbt 插件的‘源代碼’和‘文檔’。如果下載“庫源”和“sbt 源”的屬性被禁用,那么是時候轉儲結構從‘永遠’減少到不到 1 分鍾。”

即,在 IntelliJ IDEA 中,清除 IDEA 首選項中 Build Tools sbt 的“項目級別設置”下的“庫源”復選框。 如下圖所示:

在此處輸入圖片說明

我可以解決這個問題的唯一方法是sbt clean compile在 SBT 控制台/cmd 行中運行sbt clean compile ,然后在 IntelliJ 中刷新 SBT 項目。

  • 通過按Alt F12或使用sbt shell在 IDEA 中打開一個終端
  • 運行sbt - 如果是第一次,則需要一些時間。
  • 運行clean
  • 運行compile - 它將下載您項目中的依賴項。
  • 關閉 IDEA 項目( File -> Close Project )並再次打開它。

注意:如果它要求在屏幕右下角Enable auto-import ,請激活Enable auto-import ,如果您不喜歡保持啟用狀態(像我一樣)按Import ,取消同步,然后再次Refresh sbt project 當您嘗試在同步過程中使用 import 時,它會被sbt消息中的轉儲項目結構卡住。

Refresh sbt project位於 Build Sync 窗口的這個角落 - 在下面突出顯示: 刷新 sbt 項目

我還沒有找到在 IntelliJ Idea CE 2017.3 中完成這項工作的方法,所以我已經恢復到 CE 2017.2.5

IntelliJ 似乎限制了已經很慢的sbt update的效率。 我建議改用sbt-coursier 它是專門為改進依賴項更新時間而編寫的,在我參與的一個大型項目中,將依賴項更新時間縮短了大約 2 個數量級。

  1. Preferences > Build, Execution, Deployment > Build Tools > sbt取消選中“使用自動導入”以防止 IntelliJ 自行自動更新導入

在此處輸入圖片說明

  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"

有關該錯誤的更多信息,請參閱cousier issue #450

  1. (可選)從第 1 步重新啟用自動導入,因為后續的事務依賴更新可能會更快。

我也遇到了同樣的問題!我刪除目錄~/.sbt/0.13,然后就可以了。 您可以刪除您使用的 sbt 目錄。

對我有用的是在 IntelliJ 中增加 SBT 的內存。 在我的 Mac 上:首選項 -> 構建、執行、部署 -> sbt 然后將“最大堆大小”從 768MB 更改為 2048MB,然后幾分鍾后所有內容都成功導入。

自定義 SBT 版本對我有用。

IntelliJ IDEA Preferences -> Build,Execution,Deployment -> Build Tools -> sbt -> Launcher

選擇自定義

自定義 sbt 截圖

對我來說,只需檢查use sbt shell for both build and imports

有一個較舊的簽出項目導致此問題。 通常的rm -rf .idea + 重新導入,但它一直卡住。 嘗試了各種方法,但是當最終為我修復它時不僅僅是刪除頂級target文件夾,而是執行

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

下一次打開/導入完美無缺。 (這是 2018.1.5、2018.1.6 和 2018.2 RC。)

將 intelliJ 升級到 2017.3 后,我遇到了同樣的問題,但現在工作正常。

我認為 intelliJ 無法將“無代理”選項傳遞給 sbt。 所以,我補充說

-Dhttp.nonProxyHosts="host1|host2"

文件 > 設置 > 構建、執行、部署 > sbt > VM 參數中的選項

簡單地取消選中“sbt 來源”對我來說就成功了

我也面臨這個問題。 以下兩種配置對我有用。 我試圖在許多新的 sbt 項目中確認這個設置,因為它有效。

(1)在IDEA首選項(2)-Dhttp.nonProxyHosts="host1|host2"選項中的文件>設置>構建、執行、部署>sbt>VM參數中為Build Tools sbt取消選中“Project level settings”下的“Library sources”

我遇到了類似的問題,但發現它與等待鎖有關

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

可能如果殺掉IntelliJ IDEA沒有人會釋放lock文件,手動刪除locks文件后問題解決

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM