news 2026/9/29 2:57:18

JDK 安装与环境变量配置教程:JDK 8 和 11 已经不在支持列表里了

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JDK 安装与环境变量配置教程:JDK 8 和 11 已经不在支持列表里了

本文首发于 CSDN,转载请注明出处。

先说结论:装 JDK 的第一步不是下载,是先确定装哪个版本,而这件事的答案在 2026 年已经变了。JDK 8 和 JDK 11 的免费更新都已经结束,当前 LTS 是 2025 年 9 月发布的 JDK 25;2026 年 9 月 15 日刚发布的 JDK 27 不是 LTS,只支持到 2027 年 3 月。至于环境变量,只有两件事要做:设JAVA_HOME,把它的 bin 目录加进PATH。网上那些让你同时配CLASSPATH的教程可以直接跳过。

该装哪个版本?先看这张表

Java 现在是半年发一版的节奏,每两版挑一版做长期支持版(LTS),其余版本的更新只维持到下一个版本发布后不久。所以数字最大的不等于最适合你:

版本类型状态适合谁
JDK 8旧 LTS免费更新已于 2025 年 7 月结束只在维护历史老项目时用
JDK 11旧 LTS同上同上
JDK 17LTS仍在支持期依赖还没适配新版本时的稳妥选择
JDK 21LTS仍在支持期想用较新特性又要长期支持
JDK 25当前 LTS2025 年 9 月发布新项目的默认选择
JDK 27特性版2026 年 9 月 15 日发布,支持至 2027 年 3 月学习、尝鲜新特性

如果你是为了跑别人的项目,不要自己拍板。先去看项目里的构建配置:Maven 项目看pom.xml里的maven.compiler.source,Gradle 项目看sourceCompatibility,Spring Boot 项目还要看它要求的最低 Java 版本。装错版本最典型的表现是编译时抛invalid target release,或者运行时报Unsupported class file major version。

关于 JDK 27 顺便说清楚:它带来的一些改进是零代码改动就能生效的,比如紧凑对象头默认启用(对象头从 96 位压到 64 位)、G1 成为所有环境下的默认垃圾收集器。但非 LTS 版本不适合拿来做长期运行的线上环境,这条比新特性重要。

Windows 上怎么装?

优先用安装包,不要用 zip 绿色包。安装包会顺手把 JDK 注册到系统里,IDE 和构建工具能自动发现它;zip 包免安装,但路径全靠自己配,出问题的概率大得多。

安装过程只有一处需要注意:路径不要包含中文和空格。默认的C:\Program Files\Java\jdk-xx就是合适的,没必要改。

装完配两个环境变量,入口是「此电脑 → 属性 → 高级系统设置 → 环境变量」:

变量位置值
JAVA_HOME系统变量,新建JDK 安装根目录,例如C:\Program Files\Java\jdk-25
Path系统变量,编辑新增一行%JAVA_HOME%\bin

JAVA_HOME最容易错的地方是多带了一段\bin。很多工具拿到这个变量后会自己再拼一次bin,多一层就找不到可执行文件了。

还有一条要纠正:「必须配 CLASSPATH」是过时做法。那是早期 JDK 的需求,现代 JDK 和构建工具都自己管类路径。配错了反而可能干扰类加载,所以不需要配。

macOS 和 Linux 怎么配?

macOS 用安装包时,JDK 会落在系统目录,真实路径形如/Library/Java/JavaVirtualMachines/jdk-25.jdk/Contents/Home。终端现在默认 zsh,要改的是~/.zshrc:

exportJAVA_HOME=$(/usr/libexec/java_home-v25)exportPATH="$JAVA_HOME/bin:$PATH"

这里特意用系统自带的查询命令,而不是把那条很长的路径写死——以后换版本只改一个版本号,不用再去翻目录名。改完执行source ~/.zshrc生效。

Linux 上是两条路。图省事就用包管理器:

# Debian / Ubuntusudoaptinstallopenjdk-25-jdk# RHEL / Fedora / CentOS Streamsudodnfinstalljava-25-openjdk-devel

如果要用官方压缩包,解压到/usr/lib/jvm/下,再用update-alternatives注册,这样多版本切换才受系统统一管理:

sudotar-xvzfopenjdk-25_linux-x64_bin.tar.gz-C/usr/lib/jvm/sudoupdate-alternatives--install/usr/bin/javajava/usr/lib/jvm/jdk-25/bin/java1sudoupdate-alternatives--configjava

最后一条就是之后切换版本要用的命令,记这一条比记路径有用。

怎么验证真的装好了?

两条命令都要过,缺一不可:

java-versionjavac-version

只测java是不完整的。java是运行环境,javac是编译器。有些机器上前者能跑、后者提示「不是内部或外部命令」,原因就是PATH指到了 JRE 目录而不是 JDK,或者压根没配PATH。

装过多个版本的话,还要确认当前生效的是哪一个:

# Windows:列出所有命中项,按 PATH 顺序wherejava# macOS / Linux:-a 会列出全部which-ajava

装了多个版本怎么切换?

这是实际开发里最普遍的需求:老项目要 8 或 11,新项目要 17 以上。两个原则要记住。

第一,JAVA_HOME决定构建工具用哪个版本,PATH决定命令行用哪个版本,两者必须指向同一个。不然会出现「命令行显示 25、Maven 却按 17 编译」这种很难查的错乱。

第二,把切换固定成一条命令,而不是每次手动改环境变量。macOS 上只改JAVA_HOME那行的版本号;Linux 用update-alternatives --config java;Windows 上可以把JAVA_HOME指向一个固定的符号链接目录,切换时只改链接目标。

装完还是报错怎么办?

按报错原文对号入座,这几类覆盖了绝大多数情况:

报错原因处理
javac 不是内部或外部命令PATH 没配,或指到了 JRE检查%JAVA_HOME%\bin在不在 PATH 里
invalid target release编译用的 JDK 低于目标版本让JAVA_HOME指向目标版本,或调低构建配置
Unsupported class file major version运行环境的 JDK 低于编译版本把两端 JDK 统一
IDE 与命令行版本不一致IDE 有独立的 JDK 设置在 IDE 的 SDK 设置里单独指定
改完环境变量不生效终端没重启关掉所有终端窗口重开

这里有一条容易被忽略的规则:已经打开的终端和 IDE 不会重新读取环境变量。Windows 上尤其明显,改完必须新开窗口;IDEA 这类 IDE 更特殊,它自己维护一套 JDK 配置,不跟随系统环境变量走,所以系统改对了、IDE 里仍然可能是旧版本。

这套版本对应关系和报错清单我整理成了一份速查表存档,遇到问题直接翻而不是重新推一遍。写这类需要反复核对版本号的事实型内容时,我会用墨衍的AI 图文同步把稿子推到几个平台留档;集中更新的那几天靠发文额度提升不用排队;发完再用批量 GEO 检测看看这些内容在 AI 搜索里被引用的情况。墨衍会员权益 有需要可以了解。

常见问题

Q:JDK 和 OpenJDK 有什么区别?

功能层面基本一致,差别在许可和服务。OpenJDK 是开源实现,多个厂商都会基于它发布自己的构建版本。个人开发用哪个都行,商用前建议看一下对应发行版的许可条款。

Q:新项目该选 JDK 17 还是 JDK 25?

没有历史包袱就选 JDK 25,它是当前 LTS,支持周期最长。如果依赖的框架或中间件还没适配,退回 17 也是可以接受的选择。

Q:为什么装好了 JDK,还是提示找不到 Java?

基本都是环境变量问题:JAVA_HOME多带了\bin、PATH里加的是 JRE 目录、或者环境变量改完没有重开终端。

Q:可以只装 JRE 不装 JDK 吗?

只运行别人的 Java 程序,理论上够用。但现在很多发行版不再单独提供 JRE 包,而且一旦需要编译就会卡住,直接装 JDK 更省事。

Q:真的不需要配 CLASSPATH 吗?

不需要。这是早期 JDK 的历史做法,现代 JDK 和构建工具都会自己管理类路径,配了反而可能引入干扰。

Q:JDK 27 刚发布,要不要直接上?

学习、做实验可以。生产环境建议还是用 LTS,毕竟它的更新只到 2027 年 3 月。


关于墨衍:如果你也在多个平台发技术文章,值得看看墨衍。三个最常用的权益——发文额度提升(密集更新不再受限)、批量 GEO 检测(一次扫完全部文章的 AI 引用状态)、AI 图文同步(一稿多平台分发)。点这里了解墨衍会员

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/29 2:55:01

芯片烧录:自建产线还是外包?成本与风险决策指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/29 2:50:46

K3s 双节点集群部署:用 TaoToken 统一 Key 打通 Cline 与 CC Switch 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/29 2:50:21

Typora图片不显示?从路径原理到解决方法的完整指南

最近好几个朋友都在问我同一个问题:Typora里的图片突然不显示了,有的直接红叉,有的只剩一个空白的占位框,还有的打开一看全是图片路径文字。这个问题的出现频率是真的高,尤其是笔记写了一段时间、文件夹结构调整过、或…

作者头像 李华