由于密钥与自身发生碰撞导致我无法导入sbt项目的奇怪sbt错误

时间:2017-11-02 21:16:22

标签: java scala intellij-idea sbt

在IntelliJ中更改我的build.sbt文件后,我收到这个奇怪的错误报告,其中显示“键”(我不知道这些键是什么)与自己发生冲突。研究此错误消息只会发现github pull请求,其中人们请求库维护人员为其密钥添加前缀以避免密钥冲突。这些内置的IntelliJ键如何与自身发生冲突?这没有道理。以下是堆栈跟踪的摘录:

java.lang.RuntimeException: Some keys were defined with the same name but different types: 
'ssExtractBuild' (sbt.Task[org.jetbrains.sbt.structure.BuildData], sbt.Task[org.jetbrains.sbt.structure.BuildData]), 
'settingData' (sbt.Task[scala.collection.Seq[org.jetbrains.sbt.structure.SettingData]], sbt.Task[scala.collection.Seq[org.jetbrains.sbt.structure.SettingData]]), 
'taskData' (sbt.Task[scala.collection.Seq[org.jetbrains.sbt.structure.TaskData]], sbt.Task[scala.collection.Seq[org.jetbrains.sbt.structure.TaskData]]), 
'extractStructure' (sbt.Task[org.jetbrains.sbt.structure.StructureData], sbt.Task[org.jetbrains.sbt.structure.StructureData]), 
'ssExtractDependencies' (sbt.Task[org.jetbrains.sbt.structure.DependencyData], sbt.Task[org.jetbrains.sbt.structure.DependencyData]), 
'ssExtractProjects' (sbt.Task[scala.collection.Seq[org.jetbrains.sbt.structure.ProjectData]], sbt.Task[scala.collection.Seq[org.jetbrains.sbt.structure.ProjectData]]), 
'ssExtractAndroid' (sbt.Task[scala.Option[org.jetbrains.sbt.structure.AndroidData]], sbt.Task[scala.Option[org.jetbrains.sbt.structure.AndroidData]]), 
'ssExtractRepository' (sbt.Task[scala.Option[org.jetbrains.sbt.structure.RepositoryData]], sbt.Task[scala.Option[org.jetbrains.sbt.structure.RepositoryData]]), 
'ssOptions' (org.jetbrains.sbt.Options, org.jetbrains.sbt.Options), 
'commandData' (sbt.Task[scala.collection.Seq[org.jetbrains.sbt.structure.CommandData]], sbt.Task[scala.collection.Seq[org.jetbrains.sbt.structure.CommandData]]), 
'ssExtractProject' (sbt.Task[scala.collection.Seq[org.jetbrains.sbt.structure.ProjectData]], sbt.Task[scala.collection.Seq[org.jetbrains.sbt.structure.ProjectData]]), 
'ssExtractPlay2' (sbt.Task[scala.Option[org.jetbrains.sbt.structure.Play2Data]], sbt.Task[scala.Option[org.jetbrains.sbt.structure.Play2Data]])

完整的堆栈跟踪在这里:https://pastebin.com/ymZvgMCj

这是在我向build.sbt添加依赖项后发生的。我一开始认为这是问题,并试图将其删除,但现在我的build.sbt甚至无法在以前的状态下工作!我已经清除了我的intellij的缓存,重新启动,完全删除了该项目中的.idea文件夹,并将整个项目本身重新导入intellij,我仍然遇到同样的问题。在我最后一次更改build.sbt之间发生了什么事情,现在这样会破坏项目?

7 个答案:

答案 0 :(得分:77)

转到

Preference -> Build, Execution, Deployment 
                  -> SBT 
                      -> check "Use SBT shell for build and import" 
                           -> Press OK

您现在可以刷新SBT项目,它应该可以工作。 如果你愿意,你可以取消选中"使用SBT shell进行构建和导入"它也会起作用

答案 1 :(得分:3)

我也有同样的问题,我通过核对并重新安装IntelliJ来“修复”它。

Intellij版本:IntelliJ IDEA 2017.2.5 Build#IU-172.4343.14 Scala插件版本:2017.2.13

无效的步骤

  • 切换git branch
  • 使缓存无效/重新启动
  • 删除.idea目录&重新导入
  • 将SBT配置更改为不使用捆绑的jar

答案 2 :(得分:2)

我在最新的2017.3 EAP版本的Idea中遇到了同样的错误。 我无法导入项目并得到相同的错误。 对我的修复是切换到另一个分支,导入项目(成功),然后再次切换回原始分支并在Idea中重新导入项目(单击sbt刷新按钮)。

在终端中运行sbt从来没有问题,只有在Idea中。 听起来像一个想法问题......

答案 3 :(得分:1)

当我使用Intellij Idea开发Spark时,我也遇到了这个问题,我通过更改"文件 - >来解决这个问题。设置 - >构建工具 - > sbt - >组模块" to"使用合格的名字"

并制作"文件 - >设置 - >构建工具 - > sbt - >使用sbt shell进行构建和导入"地选择。

答案 4 :(得分:1)

就我而言,我有一个python模块。在外部重命名并且intellij无法执行与模块结构相关的任何操作。包括sbt刷新。

使用sbt shell无法解决问题。使缓存无效并重新启动也无济于事。

我必须删除project / .idea文件夹中的sbt.xml

这将清除您当前的sbt设置。由于sbt根本不起作用,因此没有出价交易。

答案 5 :(得分:0)

我今天遇到了这种情况,尝试了以下方法,但并没有解决问题:

  • 使用SBT Shell进行构建和导入(SBT设置)
  • 使缓存无效并重新启动

但是当我这样做时,问题终于消失了:

  • 将SBT最大堆大小增加到6000(原来是5000)

答案 6 :(得分:0)

我今天有同样的问题。我的解决方法是:

  • 使缓存无效
  • 关闭Intellij
  • 删除.idea
  • 导入项目