IntelliJ 外部库编译时错误

IntelliJ External Libraries Compile Time Errors

我为 fedmsg 添加了一个外部库到我的 java 项目中。我编译了我的代码并且运行良好。我需要来自 fedmsg class 的额外内容,所以我分叉了他们的存储库并打开了拉取请求,开发开始了。

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

但是,当我在 IntelliJ 和 atlassian SDK 中编译我的代码时,我得到了这个错误:

Error:(49, 19) java: cannot find symbol symbol: method disconnect() location: variable fedmsg of type org.fedoraproject.fedmsg.FedmsgConnection

断开连接方法在 FedmsgConnection class 中,class 作为外部库存在,错误提示它确实存在:

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

编辑:另一个奇怪的事情,如果你 "Search by symbol" (Ctrl+shift+alt+N 在 IntelliJ 中),我可以键入 "disconnect()" 并显示来自 fedmsg class 的方法。

我假设您和我一样拥有 Scala 插件,但没有其他插件。如果你的 SBT 项目很好,而你的 IDEA 项目很混乱,那么删除 '.idea' 目录。因此,您最终只会得到一个 SBT 项目。在 IntelliJ IDEA 中,您现在可以从头开始重新创建项目。要执行此操作文件 -> 打开并导航到项目的 SBT 图标。 SBT 图标是三个蓝色水平线(汉堡面包)。也许你可以保留所有设置,只需检查正确的 JDK 是否已被选中。

我不倾向于在 IntelliJ 中编译,而是使用 SBT 中的 ~package。但是,每当 build.sbt 文件发生更改时,我有时确实需要刷新 IntelliJ 项目 - 如果您转到 build.sbt 文件,IntelliJ 会通知您。为了使项目正常工作,我需要确保 JVM options 低于默认值。目前为我工作的是 568 的 'Maximum heap size, MB' 和 -XX:MaxPermSize=334M 的 'VM parameters'。我在刷新过程中遇到的另一个问题是 build.sbt 中的注释——我不得不将它们删除以避免 IntelliJ 堆栈跟踪。

当所有 jar 依赖项都正确但 IntelliJ 无法编译项目时 - 语法高亮显示全部错误证明,然后重新开始使用 IntelliJ。到目前为止,我需要定期执行此操作。

我通过从第三方库 SBT 项目(由 "sbt compile" 创建)手动导入(复制和粘贴)*.class 文件到 IntelliJ 期望的位置来解决这个问题是,即:

"(项目根目录)\classes"