问题描述

在IDEA中使用Ctrl + 左键查看第三方依赖源码时跳转到.class文件,而不是.java文件,在跳出的.class文件中尝试Download Sources时报错Cannot download Sources

image-20240325105417842

解决方法

Maven镜像

打开D:\Environments\apache-maven-3.9.3\conf\settings.xml,检查镜像配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
   <!-- maven-default-http-blocker 一定要注释掉 -->
<!-- <mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:http:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
<url>http://0.0.0.0/</url>
<blocked>true</blocked>
</mirror> -->

<!-- 阿里镜像 -->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<!--配置私服的访问路径-->
<mirror>
<id>maven-public</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/repository/maven-public/</url>
</mirror>

删除遗留文件

以下载lombok v1.18.12的源码为例,在Maven下载失败后会在如下目录

D:\Environments\apache-maven-3.9.3\repository\org\projectlombok\lombok\1.18.12

产生后缀名为lastUpdated的临时文件,在确保本地Maven的settings.xml文件设置无误并且生效后,该类文件的存在依然会导致源码下载失败,使用如下脚本删除本地Maven库中该类文件。

cleanLastUpdated.bat

1
2
3
4
5
6
7
8
9
10
@echo off

rem D:\Environments\apache-maven-3.9.3\repository
set REPOSITORY_PATH=D:\Environments\apache-maven-3.9.3\repository
rem 正在搜索...
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do (
del /s /q %%i
)
rem 搜索完毕
pause

运行完成之后在项目中刷新项目依赖即可正常下载源码。

参考链接