运行 java -version 查看JDK版本,再执行 ls $JAVA_HOME/src.zip 检查源码包是否存在;若提示“No such file”,说明未自带src.zip,需从对应OpenJDK官网下载完整包并手动复制src.zip至$JAVA_HOME目录。
Java 8 及以后的官方 JDK(如 Oracle JDK、OpenJDK)在标准安装包中通常已包含 src.zip,但部分精简版或通过包管理器安装的 JDK(如 Ubuntu 的 openjdk-17-jdk-headless)会默认不带源码。运行以下命令可快速验证:
java -version ls $JAVA_HOME/src.zip
若提示 “No such file”,说明源码未就位;$JAVA_HOME 需指向实际 JDK 根目录(例如 /usr/lib/jvm/java-17-openjdk-amd64 或 C:\Program Files\Java\jdk-17.0.2)。
若 src.zip 缺失,最稳妥的方式是去对应 OpenJDK 发行版官网下载完整构建包(非 headless 版)。例如 OpenJDK 17 的完整包一般包含 src.zip 和 docs/api 目录。
java -version 输出完全匹配的版本(注意 build number)jdk-*.tar.gz(Linux/macOS)或 jdk-*.zip(Windows),解压后找到根目录下的 src.zip
$JAVA_HOME 目录下(与 bin/、lib/ 同级),确保路径为 $JAVA_HOME/src.zip
官方 JDK 不再默认附带完整离线文档(docs/api/),需单独下载。JDK 11+ 的文档以 HTML 形式发布,体积较大(约 100MB),但加载快、无网络依赖。
jdk-*-docs-all.zip(Temurin)或 openjdk-*-docs.zip(jdk.java.net)docs/api/ 目录,记下其绝对路径(例如 /opt/jdk-17.0.2/docs/api)Extension Pack for Java 时,可在设置中配置 java.configuration.runtimes 的 docUrl 字段javadoc 命令本身需要源码或 classpath 才能生成,src.zip 是前提即使 src.zip 和文档路径都
正确,仍可能看不到跳转或注释,问题往往出在缓存或绑定层级:
pom.xml 或 build.gradle 中声明了 source 或 javadoc classifier 依赖(如 org.springframework:spring-core:5.3.31:sources),会覆盖 JDK 自带源码——检查 External Libraries 下 rt.jar 或 classes.jar 是否显示 “Sources not found”java.import.exclusions 时可能误排除 src.zip,建议清空该设置或设为 []
openjdk@17,src.zip 实际位于 $(brew --prefix openjdk@17)/libexec/openjdk.jdk/Contents/Home/src.zip,而非 $JAVA_HOME ——需软链或重设 JAVA_HOME
set JAVA_HOME=... 临时设置,重启终端后失效,应改系统环境变量最易被忽略的一点:JDK 源码只对 java.* 和 javax.*(已迁移至 jakarta.*)包生效;第三方库(如 Guava、Jackson)的源码必须单独下载或由构建工具拉取,不能靠 src.zip 覆盖。