【问题标题】:IntelliJ doesn't seem to pickup certain sbt libraries, no code completionIntelliJ 似乎没有拾取某些 sbt 库,没有代码完成
【发布时间】:2014-08-01 22:59:08
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 请提供您的 SBT 版本以及 built.sbt 的内容(或您放置依赖项的任何位置)。你使用 SBT 插件吗?
  • 添加新的依赖后你有没有执行play idea命令???
  • @biesior 我再次运行它,它重新启动了idea,仍然没有变化。
  • @Blankman 我的项目现在遇到了完全相同的问题。你找到解决办法了吗?

标签: scala intellij-idea playframework sbt


【解决方案1】:

当添加依赖项通常是重新生成idea xml配置文件(在.idea和/或.idea_modules以及相关的.iml文件中)的好习惯时,尝试添加this plugin然后使用sbt gen-idea,或者如果您正在使用游戏,您可以简单地使用 sbt idea with-sources=yes,它与游戏一起提供,如 here 所示。

Idea 使用 xml 来存储配置,实际上如果您现在查看它们,可能找不到您刚刚添加的 jars/library,因为它们没有自动更新。

【讨论】:

  • 是的,我已经在使用那个插件了。我是否必须在更新我的 sbt 项目后重新生成它?
  • 添加新的依赖项时,Intellij 看不到它,因为它正在查看尚未更新的 xml 配置文件,如果您在 .idea 文件夹中搜索,它应该包含您的所有依赖项。例如,我在我的项目中添加了google ads 依赖项,并且在我的.idea 文件夹中的各个位置都引用了该依赖项。
【解决方案2】:

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

有一次,我遇到了 IDEA 感到困惑的问题,并且没有将依赖项自动完成/标记为错误。在这种情况下,使用 File -> Invalidate Caches / Restart... 解决了这个问题。不过,在最近的版本中,我并没有发生这种情况。

【讨论】:

  • 我之前试过这个,它确实需要 30 多分钟才能导入......不再尝试了。
  • 谢谢。 gen-idea 现在对于 idea 14.x 来说已经过时了。 @Blankman,您可以在 ~/.ivy2 中挖掘您的常春藤缓存并尝试仅删除有问题的组。核对依赖项缓存总是很痛苦,尤其是当您有很多依赖项和/或连接速度很慢时。它可以轻松达到 500MB。
  • 另外注意,通过选择build.sbt文件来导入项目,而不是项目目录,否则它不会推断它是一个sbt项目。
【解决方案3】:

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

我想我应该选择从 SBT 导入。但是对于我所做的路线,这给了我 OP 的问题。为了解决这个问题,一旦我将 Scala SDK 加载到项目中,它会询问我是否要导入 SBT 项目。我这样做了,然后我去了 build.sbt 文件并做了一个刷新项目(不确定是否需要此步骤)。但是,然后我在模块中看到,它使用了main 作为模块根。所以我进入了模块设置,将main作为一个模块删除,只留下根文件夹(通常带有项目名称)作为唯一的模块。应该这样做 - 在您的 SBT 中执行另一个刷新项目以引入项目构建模块,您应该一切顺利。

【讨论】:

    【解决方案4】:

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

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

    在 macOS 上,我已删除此文件夹:

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

    【讨论】:

      猜你喜欢
      • 2019-09-05
      • 1970-01-01
      • 2011-11-02
      • 1970-01-01
      • 2023-04-07
      • 2018-09-18
      • 1970-01-01
      • 2013-03-17
      • 1970-01-01
      相关资源
      最近更新 更多