Maven下载sources时报错java.lang.RuntimeException: Cannot reconnect

解决Maven源代码下载失败:CannotReconnect问题及解决办法
本文介绍了在使用IntelliJ IDEA时遇到的Maven下载sources错误,主要表现为连接127.0.0.1被拒绝。解决方法包括设置-Djava.net.preferIPv4Stack=true和更换JDK为JDK1.8。通过添加参数解决了连接问题,适合对Maven配置感兴趣的开发者参考。

1 报错信息

大致报错背景如下:

  1. 可以正常导入和更新依赖
  2. maven更改过阿里镜像
  3. 下载sources会报错,具体堆栈信息如下
java.lang.RuntimeException: Cannot reconnect.
	at org.jetbrains.idea.maven.server.RemoteObjectWrapper.perform(RemoteObjectWrapper.java:82)
	at org.jetbrains.idea.maven.server.MavenEmbedderWrapper.customizeForResolve(MavenEmbedderWrapper.java:38)
	at org.jetbrains.idea.maven.project.MavenProjectResolver.downloadSourcesAndJavadocs(MavenProjectResolver.java:253)
	at org.jetbrains.idea.maven.project.MavenProjectsProcessorArtifactsDownloadingTask.perform(MavenProjectsProcessorArtifactsDownloadingTask.java:40)
	at org.jetbrains.idea.maven.project.MavenProjectsProcessor.doProcessPendingTasks(MavenProjectsProcessor.java:146)
	at org.jetbrains.idea.maven.project.MavenProjectsProcessor$1.run(MavenProjectsProcessor.java:115)
	at org.jetbrains.idea.maven.utils.MavenUtil.lambda$runInBackground$5(MavenUtil.java:518)
	at com.intellij.util.RunnableCallable.call(RunnableCallable.java:20)
	at com.intellij.util.RunnableCallable.call(RunnableCallable.java:11)
	at com.intellij.openapi.application.impl.ApplicationImpl$1.call(ApplicationImpl.java:270)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
	at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: 
	java.net.ConnectException: Connection refused: connect
	at java.rmi/sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:623)
	at java.rmi/sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:209)
	at java.rmi/sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:196)
	at java.rmi/sun.rmi.server.UnicastRef.invoke(UnicastRef.java:132)
	at java.rmi/java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:217)
	at java.rmi/java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:162)
	at com.sun.proxy.$Proxy157.createEmbedder(Unknown Source)
	at jdk.internal.reflect.GeneratedMethodAccessor1731.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at com.intellij.execution.rmi.RemoteUtil.invokeRemote(RemoteUtil.java:150)
	at com.intellij.execution.rmi.RemoteUtil.access$400(RemoteUtil.java:21)
	at com.intellij.execution.rmi.RemoteUtil$1.lambda$invoke$0(RemoteUtil.java:134)
	at com.intellij.openapi.util.ClassLoaderUtil.computeWithClassLoader(ClassLoaderUtil.java:31)
	at com.intellij.execution.rmi.RemoteUtil.executeWithClassLoader(RemoteUtil.java:202)
	at com.intellij.execution.rmi.RemoteUtil$1.invoke(RemoteUtil.java:134)
	at com.sun.proxy.$Proxy157.createEmbedder(Unknown Source)
	at org.jetbrains.idea.maven.server.MavenServerConnector.createEmbedder(MavenServerConnector.java:191)
	at org.jetbrains.idea.maven.server.MavenServerManager$2.create(MavenServerManager.java:344)
	at org.jetbrains.idea.maven.server.MavenServerManager$2.create(MavenServerManager.java:332)
	at org.jetbrains.idea.maven.server.RemoteObjectWrapper.getOrCreateWrappee(RemoteObjectWrapper.java:41)
	at org.jetbrains.idea.maven.server.MavenEmbedderWrapper.doCustomize(MavenEmbedderWrapper.java:79)
	at org.jetbrains.idea.maven.server.MavenEmbedderWrapper.lambda$customizeForResolve$0(MavenEmbedderWrapper.java:39)
	at org.jetbrains.idea.maven.server.RemoteObjectWrapper.perform(RemoteObjectWrapper.java:76)
	... 17 more
Caused by: java.net.ConnectException: Connection refused: connect
	at java.base/java.net.PlainSocketImpl.connect0(Native Method)
	at java.base/java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:101)
	at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
	at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
	at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
	at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
	at java.base/java.net.Socket.connect(Socket.java:609)
	at java.base/java.net.Socket.connect(Socket.java:558)
	at java.base/java.net.Socket.<init>(Socket.java:454)
	at java.base/java.net.Socket.<init>(Socket.java:231)
	at com.intellij.execution.rmi.RemoteServer$1.createSocket(RemoteServer.java:122)
	at java.rmi/sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:617)
	... 40 more

2 解决办法

1.添加参数-Djava.net.preferIPv4Stack=true
2.更改JDK为JDK 1.8

具体原因还不清楚,不过添加这参数之后可以解决问题.解决办法是参考开源中国问答得到的,感兴趣可以再看看这篇问答
添加参数

### 解决JetBrains IDEA 下载源码失败的方法 当遇到 `java.lang.RuntimeException: Cannot reconnect` 错误,这通常意味着网络连接存在问题或配置不正确[^1]。对于 Maven 项目而言,如果提示 "Cannot download sources Sources not found",可能是由于Maven仓库设置不当或是本地缓存问题引起的[^3]。 #### 方法一:更新依赖并强制重新下载资源 可以尝试通过命令行工具来刷新项目的依赖关系,并指定获取源文件: ```bash mvn clean install -U mvn dependency:sources ``` 上述两条指令分别用于清理旧构建数据、安装最新版本库到本地以及拉取所有可用的源代码包。需要注意的是 `-U` 参数会告诉Maven忽略其内部缓存而直接向远程服务器查询最新的元数据和构件信息。 #### 方法二:调整IDEA中的Maven设置 前往 **File | Settings (Ctrl+Alt+S)** 菜单下的 **Build, Execution, Deployment | Build Tools | Maven** 部分,在右侧找到 Repositories 列表,点击右边的小齿轮图标选择 “Update” 来同步中央仓库索引;也可以手动移除某些特定镜像站点后再试一次下载操作。 #### 方法三:处理Gradle项目的情况 如果是基于 Gradle 的 Spring Framework 工程,则建议先进入对应的模块目录再运行相应的任务以触发必要的编译过程,从而间接促使 IDE 加载缺失的源码附件: ```bash cd path/to/spring-framework/ ./gradlew :spring-core:build --refresh-dependencies ``` 此命令不仅能够重建整个工程结构而且还会清除之前可能残留下来的错误状态,确保每次都能从头开始解析所有的外部引用项[^4]。
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值