IntelliJ似乎没有拾取某些sbt库,也没有代码完成

时间:2014-06-11 18:56:09

标签: scala intellij-idea playframework

我在终端中使用sbt控制台来编译我的scala / play项目。

我正在使用intellij来编辑我的源代码,基本上只是用它来获取一些代码完成和导航等。

由于某些原因,某些库似乎无法正确加载。例如,我在我的Dependancies.scala文件中添加了弹性搜索,重新加载了sbt并且所有内容编译都很好但是由于某些原因IntelliJ没有正确拾取jar,即它们是红色的并且没有语法完成。

我该如何解决这个问题?我试图关闭intellij并重新启动它,但问题仍然存在。

我正在使用Intelli 13.1.3(终极版)

enter image description here

4 个答案:

答案 0 :(得分:2)

如果您将IDEA 13.x与Scala插件一起使用,则可以直接导入SBT文件(文件 - >导入项目...),而您不需要sbt-idea插件。如果在导入期间选择“使用自动导入”,它将自动同步对build.sbt文件的任何更改。

有一段时间我遇到了IDEA的问题,而不是自动填充/标记依赖关系作为错误。在这种情况下,使用文件 - >无效缓存/重新启动...修复了问题。但是,在最近的版本中,我没有想到这一点。

答案 1 :(得分:1)

一般情况下,添加依赖项是一种很好的做法,可以重新生成构思xml配置文件(在.idea和/或.idea_modules内部以及相关的.iml文件中),尝试添加this plugin然后使用sbt gen-idea,或者甚至更好,如果你正在使用游戏,你可以简单地使用sbt idea with-sources=yes游戏,如here所示。

Idea利用xml来存储配置,事实上如果你现在看它们,你可能无法找到刚刚添加的jar /库,只是因为它们没有自动更新。

答案 2 :(得分:0)

当我通过IntelliJ的“从版本控制签出”从Github中引入一个项目时,我遇到了这个问题。导入时,我有2个选项-“从外部来源导入”或选择项目类型(Maven,SBT等),然后选择了前者。

我认为我应该选择从SBT导入。但是,按照我做的路线,这给了我OP的问题。为了修复,将Scala SDK加载到项目中后,它询问我是否要导入SBT项目。我这样做了,然后转到build.sbt文件并做了一个刷新项目(不确定是否需要此步骤)。但是,然后我在模块中看到它已使用main作为模块根。因此,我进入了模块设置,并删除了main作为一个模块,只剩下了根文件夹(通常带有项目名称)作为唯一的模块。这样就可以了-在SBT中执行另一个刷新项目以引入项目构建模块,您应该会做得很好。

答案 3 :(得分:0)

遗憾的是“文件 > 使缓存无效...”和其他建议的解决方案没有帮助。

对我来说,一个解决方案是放弃配置并使用新的(默认)设置启动 IntelliJ。也许那里发生了一些怪癖。

在 macOS 上我删除了这个文件夹:

~/Library/Application\ Support/JetBrains/IntelliJIdea*