Intellij无法解析对特定jar文件的引用

时间:2014-05-23 20:02:19

标签: scala intellij-idea sbt

在由sbt驱动的给定项目中,项目库中存在某种类型的损坏,特别是用于kafka-spark-9.7.2.jar的MavenLocal存储库,其中:

  • 对该jar提供的类的引用标记为"未找到符号"由编辑器解析器
  • 然而编辑(奇怪地)提供导入类
  • 但在接受导入后,符号仍然以红色标记为未解析。

enter image description here

以下尝试"清理"已经完成了:

  • 构建|制作项目
  • 构建|重建项目

此外,我已经验证项目

构建
sbt package

在命令行上

UPDATE 重新运行sbt gen-idea后,解析器仍然找不到库。但是库存在 - 即使IJ知道它们,如下面的屏幕截图所示。为什么IJ可以找到库

C:\Users\S80035683\.ivy2\cache\org.apache.kafka\kafka\jars\kafka-0.7.2-spark.jar!\kafka\api\FetchRequest.class

但是,IJ无法解析Parser中该库的任何类?

enter image description here

2 个答案:

答案 0 :(得分:2)

您必须为Intellij构建项目,尝试在项目根目录中执行此操作:

sbt idea with-sources=yes

这应该从头开始构建项目结构并添加正确的依赖项,通常我在添加依赖项或jar后刷新项目。

编辑: 要使用此命令,您需要plugin,否则您可以使用gen-idea,但我只使用了几次而且我不确定它是如何运作的。

EDIT2:

有一些混乱,首先,对于IDEA SBT控制台,您不需要预先添加sbt命令,因为您已经在sbt内部了:

enter image description here

如果您有想法的sbt插件,可以使用gen-idea with-source=yes(不预先添加sbt)

enter image description here

在终端上,您可以转到项目根目录并输入sbt进入sbt控制台并使用gen-ideaidea with-sources=yes(不预先添加sbt)

enter image description here

或直接sbt gen-idea或者如果你有插件sbt idea with-sources=yes(prepending sbt)

enter image description here

要达到sbt控制台内部的想法,你需要在首选项上安装sbt插件 - >插件并搜索sbt然后查看 - >工具Windows - > SBT控制台:

enter image description here

要启动控制台,请单击播放按钮,以杀死头骨上的控制台。

答案 1 :(得分:0)

我遇到了同样的问题。我通过直接编写有问题的库的CLASSESSOURCES来修复它。这可以在.idea/libraries/SBT__<problematic library>_jar.xml

中找到