IntelliJ外部库编译时间错误

时间:2015-07-07 15:23:33

标签: java maven intellij-idea sbt

我在fedmsg的java项目中添加了一个外部库。我让我的代码编译并且工作得很好。我需要从fedmsg类中获得额外的东西,所以我分叉了他们的存储库并打开了一个pull请求,开发工作就开始了。

回到IntelliJ,我为更新的代码重建了doc,src和class .jar,并将其重新导入IntelliJ。 IntelliJ显示没有错误,甚至自动填充我的代码,如下所示:enter image description here

但是,当我在IntelliJ和atlassian SDK中编译我的代码时,我收到此错误:

  

错误:(49,19)java:找不到符号     符号:方法disconnect()     location:org.fedoraproject.fedmsg.FedmsgConnection类型的变量fedmsg

disconnect方法在FedmsgConnection类中,并且该类作为外部库存在,其中错误表明它:

enter image description here

知道发生了什么事吗?注意:当我使用sbt编译fedmsg-java .jars时,显然没有错误。

编辑:另一个奇怪的事情,如果你“按符号搜索”( Ctrl + shift + alt + N ,我可以输入“disconnect()”,并显示来自fedmsg类的方法。

2 个答案:

答案 0 :(得分:0)

我假设像我一样你有Scala插件而没有其他插件。如果你的SBT项目很好并且你的IDEA项目很混乱,那么删除' .idea'目录。因此,您最终将只获得一个SBT项目。从IntelliJ IDEA,您现在可以从头开始重新创建项目。要做这个文件 - >打开并导航到项目的SBT图标。 SBT图标是三条蓝色水平线(汉堡包)。可能你可以按原样保留所有设置,只需选中正确的JDK即可。

我不倾向于在IntelliJ中编译,但是使用来自SBT的~package。但是,有时我需要在build.sbt文件发生变化时刷新IntelliJ项目 - IntelliJ会告诉您是否转到build.sbt文件。要刷新项目,我需要确保JVM options低于默认值。目前为我工作的是拥有最大堆大小,MB' 568和' VM参数' -XX:MaxPermSize=334M。我在刷新过程中遇到的另一个问题是build.sbt中的注释 - 我不得不将它们剥离以避免IntelliJ堆栈跟踪。

每当所有jar依赖项都正确但IntelliJ不会编译项目时 - 通过突出显示错误的语法证明,然后重新开始使用IntelliJ。到目前为止,我需要定期这样做。

答案 1 :(得分:0)

我通过手动将* .class文件从第三方库SBT项目(由“sbt compile”创建)导入(复制和粘贴)到IntelliJ期望的位置来修复此问题,即:< / p>

“(项目根目录)\ classes”