Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java IntelliJ外部库编译时错误_Java_Maven_Intellij Idea_Sbt - Fatal编程技术网

Java IntelliJ外部库编译时错误

Java IntelliJ外部库编译时错误,java,maven,intellij-idea,sbt,Java,Maven,Intellij Idea,Sbt,我为我的fedmsg java项目添加了一个外部库。我有我的代码编译和工作的伟大。我需要从fedmsg类中获得一些额外的东西,所以我将他们的存储库分叉,并打开一个pull请求,开发就开始了 回到IntelliJ,我为更新的代码重建了doc、src和class.jar,并将其重新导入IntelliJ。IntelliJ没有显示错误,甚至可以自动完成我的代码,如下所示: 但是,当我在IntelliJ和atlassian SDK中编译代码时,出现以下错误: 错误:(49,19)java:找不到符号 符号

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

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

但是,当我在IntelliJ和atlassian SDK中编译代码时,出现以下错误:

错误:(49,19)java:找不到符号 符号:方法断开连接() 位置:org.fedoraproject.fedmsg.FedmsgConnection类型的变量fedmsg

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

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


编辑:另一件奇怪的事情,如果您“按符号搜索”(IntelliJ中的Ctrl+shift+alt+N),我可以键入“disconnect()”,然后会显示fedmsg类中的方法

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

我不倾向于在IntelliJ中编译,而是使用SBT中的
~package
。但是,每当
build.sbt
文件发生更改时,我有时确实需要刷新IntelliJ项目,如果您转到
build.sbt
文件,IntelliJ会通知您这一点。要刷新项目以使其工作,我需要确保
JVM选项
低于默认值。目前我的工作是将“最大堆大小,MB”设置为
568
,“VM参数”设置为
-XX:MaxPermSize=334M
。我在刷新过程中遇到的另一个问题是
build.sbt
中的注释-我必须去掉它们以避免IntelliJ堆栈跟踪


只要所有jar依赖项都正确,但IntelliJ不会编译项目——语法突出显示完全错误就是明证,那么就用IntelliJ重新开始。到目前为止,我需要定期这样做。

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


“(项目根)\classes”

您是否更改了pom.xml中关联依赖项的版本?@yole该版本没有更改。我必须手动将.class文件重新导入到我的文件结构中,方法是将它们复制并粘贴到正确的位置。导入maven.File->Invalidate Caches/Restart未跟踪的第三方.jar时,我一定是做错了什么…@ChrisMurphy尝试了很长一段时间使用IntelliJ具有的多个其他“重置”功能,但它什么也没做。IntelliJ和SBT在.class文件所在的位置有相同的目标吗,还是有两个不同的位置?拥有你唯一能找到类的地方(例如target/scala-2.11/classes)似乎是让SBT和IntelliJ合作的最干净的方式——SBT是“大师”。我一定解释得很糟糕。我有一个atlassian项目,就是我导入IntelliJ的。我有一个使用SBT编译的第三方库(在maven上找不到)。它编译成的.jar使用“项目结构->库->+”过程导入IntelliJ。出于某种原因,它也不会查找类文件并导入它们。可能是因为这是一个SBT项目,而不是它所期望的,我猜。我不知道什么是大西洋项目,我担心。.class文件已经在jar文件中,所以这就足够了。总的来说,我觉得让IntelliJ尽可能少地承担责任,让SBT来控制是件好事。我发现最好不要使用像您提到的导入库过程这样的函数。根据我的经验,没有必要这样做,这似乎是你问题的原因。如果您需要的jar文件在build.sbt文件中,那就足够了。