我在fedmsg的java项目中添加了一个外部库。我让我的代码编译并且工作得很好。我需要从fedmsg类中获得额外的东西,所以我分叉了他们的存储库并打开了一个pull请求,开发工作就开始了。
回到IntelliJ,我为更新的代码重建了doc,src和class .jar,并将其重新导入IntelliJ。 IntelliJ显示没有错误,甚至自动填充我的代码,如下所示:
但是,当我在IntelliJ和atlassian SDK中编译我的代码时,我收到此错误:
错误:(49,19)java:找不到符号 符号:方法disconnect() location:org.fedoraproject.fedmsg.FedmsgConnection类型的变量fedmsg
disconnect方法在FedmsgConnection类中,并且该类作为外部库存在,其中错误表明它:
知道发生了什么事吗?注意:当我使用sbt编译fedmsg-java .jars时,显然没有错误。
编辑:另一个奇怪的事情,如果你“按符号搜索”( Ctrl + shift + alt + N 在IntelliJ中的kbd>,我可以输入“disconnect()”,并显示来自fedmsg类的方法。
答案 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”