ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

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

JDK 安装与环境变量配置教程:JDK 8 和 11 已经不在支持列表里了 本文首发于 CSDN转载请注明出处。先说结论装 JDK 的第一步不是下载是先确定装哪个版本而这件事的答案在 2026 年已经变了。JDK 8 和 JDK 11 的免费更新都已经结束当前 LTS 是 2025 年 9 月发布的 JDK 252026 年 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.sourceGradle 项目看sourceCompatibilitySpring 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-25Path系统变量编辑新增一行%JAVA_HOME%\binJAVA_HOME最容易错的地方是多带了一段\bin。很多工具拿到这个变量后会自己再拼一次bin多一层就找不到可执行文件了。还有一条要纠正「必须配 CLASSPATH」是过时做法。那是早期 JDK 的需求现代 JDK 和构建工具都自己管类路径。配错了反而可能干扰类加载所以不需要配。macOS 和 Linux 怎么配macOS 用安装包时JDK 会落在系统目录真实路径形如/Library/Java/JavaVirtualMachines/jdk-25.jdk/Contents/Home。终端现在默认 zsh要改的是~/.zshrcexportJAVA_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 javaWindows 上可以把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 搜索里被引用的情况。墨衍会员权益 有需要可以了解。常见问题QJDK 和 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 和构建工具都会自己管理类路径配了反而可能引入干扰。QJDK 27 刚发布要不要直接上学习、做实验可以。生产环境建议还是用 LTS毕竟它的更新只到 2027 年 3 月。关于墨衍如果你也在多个平台发技术文章值得看看墨衍。三个最常用的权益——发文额度提升密集更新不再受限、批量 GEO 检测一次扫完全部文章的 AI 引用状态、AI 图文同步一稿多平台分发。点这里了解墨衍会员
返回列表