Intellij Idea Maven "无法重新连接" 错误

74
也许你可以帮我解决一个奇怪的Apache Maven问题,就是当我在Intellij Idea 13中打开我的项目时。当项目打开后,我在"External Libraries"部分看不到任何库。而且,在各个模块的pom.xml文件中,我看到了错误信息"Cannot reconnect"。
我尝试了使Idea无效缓存/重启、使用Maven Reimport,但问题仍然存在。但是,如果我执行mvn clean install并部署我的项目,则一切正常。我使用的是Maven 3.2.3和Java 1.8。
Maven设置如下:
[图片]
附上了idea.log文件:
2015-06-03 11:54:24,585 [ 441715]   INFO -      #org.jetbrains.idea.maven - Cannot reconnect. 
java.lang.RuntimeException: Cannot reconnect.
    at org.jetbrains.idea.maven.server.RemoteObjectWrapper.perform(RemoteObjectWrapper.java:98)
    at org.jetbrains.idea.maven.server.MavenEmbedderWrapper.resolveProject(MavenEmbedderWrapper.java:97)
    at org.jetbrains.idea.maven.project.MavenProjectReader.resolveProject(MavenProjectReader.java:462)
    at org.jetbrains.idea.maven.project.MavenProject.resolve(MavenProject.java:624)
    at org.jetbrains.idea.maven.project.MavenProjectsTree.resolve(MavenProjectsTree.java:1215)
    at org.jetbrains.idea.maven.project.MavenProjectsProcessorResolvingTask.perform(MavenProjectsProcessorResolvingTask.java:42)
    at org.jetbrains.idea.maven.project.MavenProjectsProcessor.doProcessPendingTasks(MavenProjectsProcessor.java:131)
    at org.jetbrains.idea.maven.project.MavenProjectsProcessor.access$100(MavenProjectsProcessor.java:28)
    at org.jetbrains.idea.maven.project.MavenProjectsProcessor$2.run(MavenProjectsProcessor.java:107)
    at org.jetbrains.idea.maven.utils.MavenUtil$6.run(MavenUtil.java:440)
    at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:419)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
    at com.intellij.openapi.application.impl.ApplicationImpl$1$1.run(ApplicationImpl.java:149)
Caused by: java.rmi.ServerError: Error occurred in server thread; nested exception is: 
    java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:351)
    at sun.rmi.transport.Transport$1.run(Transport.java:200)
    at sun.rmi.transport.Transport$1.run(Transport.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$254(TCPTransport.java:683)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$1/99407688.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:275)
    at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:252)
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:161)
    at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:194)
    at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:148)
    at com.sun.proxy.$Proxy121.resolveProject(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.intellij.execution.rmi.RemoteUtil$2$1$1.compute(RemoteUtil.java:106)
    at com.intellij.execution.rmi.RemoteUtil.executeWithClassLoader(RemoteUtil.java:167)
    at com.intellij.execution.rmi.RemoteUtil$2$1.invoke(RemoteUtil.java:102)
    at com.sun.proxy.$Proxy121.resolveProject(Unknown Source)
    at org.jetbrains.idea.maven.server.MavenEmbedderWrapper$4.execute(MavenEmbedderWrapper.java:100)
    at org.jetbrains.idea.maven.server.MavenEmbedderWrapper$4.execute(MavenEmbedderWrapper.java:97)
    at org.jetbrains.idea.maven.server.RemoteObjectWrapper.perform(RemoteObjectWrapper.java:89)
    ... 16 more
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils
    at org.apache.maven.wagon.providers.file.FileWagon.resolveDestinationPath(FileWagon.java:206)
    at org.apache.maven.wagon.providers.file.FileWagon.resourceExists(FileWagon.java:265)
    at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$GetTask.run(WagonRepositoryConnector.java:577)
    at org.sonatype.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:60)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
2015-06-03 11:54:24,586 [ 441716]   WARN - ution.rmi.RemoteProcessSupport - Exception in thread "pool-6-thread-1" java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils 
2015-06-03 11:54:24,586 [ 441716]   WARN - ution.rmi.RemoteProcessSupport - at org.apache.maven.wagon.providers.file.FileWagon.resolveDestinationPath(FileWagon.java:206) 

我的猜测是你的IntelliJ Maven插件存在问题,但是通过命令行运行Maven没有任何问题。 - Tim Biegeleisen
@TimBiegeleisen - 你可以右键点击并在新标签页中打开它。它足够大了。@MeetJoeBlack - 请检查idea.log并查看其中存在的错误详细信息。 - ring bearer
你尝试过使用捆绑的Maven而不是命令行吗?http://puu.sh/iaG9U/bd94fce2ba.png - Crembo
2
我的问题通过更新/etc/hosts文件得到了解决。请参考此链接 - Not a bug
@Notabug 我的兄弟,你救了我的一天。这个问题真的很烦人,我在一个会话中只是不停地切换 JDK 导入器。除了本地主机名之外,我的 hosts 文件中 127.0.0.1 还被 Docker Desktop 映射到 Kubernetes 上。现在我把它注释掉了,现在一切都像魔法一样运行。谢谢你。 - cyanotrix
10个回答

196

我也遇到了同样的错误,这是我修复的方法:

  1. 按下 Ctrl+Alt+S 打开设置界面, 然后导航至 Build, Execution, Deployment | Build Tools | Maven | Importing

  2. 勾选Importer使用的JDK, 从下拉列表中更改你机器上安装的JDK的确切版本(例如:1.8.0.250)。

enter image description here

完成后会提示进行验证,之后maven将会自动更新并运行项目。

在我的情况下,由于导入项目时所用的JDK与本机安装的JDK不同,因此我做了同样的操作。这种情况通常发生在我们卸载IDE和JDK并安装了新版本后,IDE自动获取之前可用的项目,但无法更改已导入的JDK版本。


8
这应该被标记为解决方案。 - Marks Gniteckis
这段时间它对我有效,但之后又会出现问题,我需要再次切换(切换到任何选项都可以)。似乎问题出在其他地方,但你可以通过不时切换JDK来解决它。 - domaru
3
令人惊讶的是,即使已经设置正确,这对我仍然有效。我只是从下拉菜单中再次选择它,点击应用和确定,就可以顺利下载了。真奇怪! - devinbost
更改项目SDK对我产生了相同的影响(而无需触碰Maven设置) - hughjdavey
1
对于像我一样拥有多个Java版本的任何人,您需要选择设置为JAVA_HOME的版本才能使其正常工作。 - Skillzore
显示剩余5条评论

23

在这种情况下,单击“重新加载所有Maven项目”对我有所帮助。

在此输入图像描述


2
这是我在遇到Maven问题时考虑的默认操作之一,但在我的情况下并没有帮助。 - sinned
1
对我来说,问题恰好发生在我点击图标后。 - domaru
5
再点击一次。 - matua
6
点击几次后,它同步了!看起来像是一些随机行为。 - auspicious99
2
点击几次刷新按钮:可能会遇到的最愚蠢和最愚笨的错误之一,以及它的显着解决方案。 - Mustafa Güven

23

我通过将本地的Maven 3.3.9更改为Idea Bundle Maven3来解决了这个问题。


你是怎么做到的? - parsecer
3
偏好设置 -> 构建、执行、部署 -> 构建工具 -> Maven -> Maven主目录(下拉菜单)。这个解决方案对我也有效。 - Srikanth Reddy Lingala
我已经有捆绑的文件了,但仍然出现这个错误。 - domaru

9

文件 -> 无效缓存

在IntelliJ似乎自我纠缠的情况下,执行此操作也可能有所帮助。


除了这个,其他的都对我没用。点击“使缓存无效”后,所有内容立即重新加载,就像全新的一样。我已经在这上面努力了几个小时,但这个解决方案帮助我解决了问题。你是我的救星,谢谢! - Aravindh Sivalingam
任何奇怪的IntelliJ问题 -> 无效缓存。缺点是您需要重新启动应用程序以及正在运行的所有服务。 - gdrt

3
在我的情况下,重新启动IntelliJ解决了这个问题。

对我来说也是一样的...只要重新启动它,一切都会正常运行 - ch271828n

3

如果您正在WSL中使用InteliJ和X-Server(例如VcXsrv),解决方法可能是:

  1. 关闭InteliJ
  2. 重新启动服务器
  3. 打开InteliJ

这样就可以正常工作了。


对于那些使用WSL的人,请先尝试这个。它也为我解决了问题。 - WinterBoot

1

我通过删除来自~/.m2的传输错误中的.lastUpdated文件来解决了这个问题。

find ~/.m2  -name "*.lastUpdated" -exec grep -q "Could not transfer" {} \; -print -exec rm {} \;

0
我遇到了这个错误,在IntelliJ中按照以下步骤修复了它: 1] 关闭所有正在运行的应用程序(如果有)
2] 重新导入/重新加载pom.xml(右键单击pom.xml -> 选择maven选项 -> 重新导入/重新加载项目)
3] 然后运行您的应用程序(即主文件) 通过这样做,我不需要手动删除.m2文件夹。

0
原因 IDE在单独的Java进程中启动Maven导入,并通过Java RMI调用与其通信,该调用通过本地回环接口(localhost)进行。为了访问回环接口,使用localhost主机名。当IDE无法建立与localhost的连接时,就会出现此错误。可能有几个原因导致localhost无法访问:

DNS配置错误 127.0.0.1是IPv4回环流量的标准地址,localhost名称必须解析为127.0.0.1 IPv4地址。如果不是这样,就会出现错误。

防火墙或杀毒软件阻止对localhost的连接

解决方法 确保localhost主机名解析为127.0.0.1 IPv4回环地址。最好只将localhost名称留给127.0.0.1地址。为此,hosts文件必须只包含以下行以将localhost映射到IPv4和IPv6本地地址:

快速解决方案 重新启动Intelij IDE。

0
在我的情况下,我已经将Maven运行程序和导入程序设置为使用项目JDK,但是我通过将JDK从OpenJDK更改为Liberica JDK(相同的Java版本)来解决了这个问题,它神奇地开始工作了。
因此,对于任何遇到类似问题的人,请尝试将JDK更改为不同的实现。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接