build.sbt在IntelliJ中更改我的文件后,我收到这个奇怪的错误报告,其中显示"键"(我不知道这些键甚至是什么)与自己发生冲突.研究此错误消息只会发现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]])
Run Code Online (Sandbox Code Playgroud)
完整的堆栈跟踪在这里:https://pastebin.com/ymZvgMCj
这是在我向我添加依赖项后发生的build.sbt.我认为这是问题,并尝试删除它,但现在我build.sbt甚至没有在以前的状态下工作!我已经清除了我的intellij缓存,重新启动,.idea完全删除了该项目中的文件夹,并将整个项目本身重新导入intellij,我仍然遇到同样的问题.在我最后一次改变我build.sbt和现在会破坏这个项目之间会发生什么?
我有一个使用番石榴集合的临时文件,我得到了一些奇怪的错误,我不得不假设是由于编辑器和实际运行环境假设番石榴集合的不同版本:
Exception in thread "main" java.lang.IllegalAccessError: tried to access method com.google.common.collect.Range.<init>(Lcom/google/common/collect/Cut;Lcom/google/common/collect/Cut;)V from class
com.google.common.collect.Ranges
at com.google.common.collect.Ranges.create(Ranges.java:80)
at com.google.common.collect.Ranges.closedOpen(Ranges.java:114)
at Scratch.main(scratch_2.java:69)
Run Code Online (Sandbox Code Playgroud)
并不是说我实际上可以肯定地知道这一点,因为我也无法弄清楚我应该如何查看暂存文件正在拉入哪个版本。我已经从我的项目的 deps 中完全删除了番石榴,并且暂存文件仍然有效。 .. 为什么?哪里来的图书馆???临时运行配置完全没有任何指示这一点的内容:
但它仍然运行得很好。我发现如果我从本地常春藤缓存中删除番石榴条目,它将不再运行。如果我然后将番石榴添加回我的项目 deps,它会再次出现在我的 ivy 缓存中,然后即使我从项目 deps 中删除番石榴,临时文件也可以再次正常运行。那么临时文件是否只是选择了一个随机版本之类的?位于 的常春藤缓存~/.ivy2/cache/com.google.guava如下所示:
但由于某种原因,还有一个“jars”文件夹,里面有一个 guava-12.0:
同样,我不知道正在使用哪个版本,或者为什么缓存有这么多不同的版本。有任何想法吗?