尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Linux下JDK 24 tar.gz安装与多版本环境配置指南

Linux下JDK 24 tar.gz安装与多版本环境配置指南 简介本资源为 Oracle 官方发布的 JDK 24 Linux x64 平台标准二进制发行版面向 Java 开发者、系统运维工程师及高校计算机专业师生用于搭建最新 LTS 前沿版本的 Java 运行与开发环境。压缩包共含 405 个文件涵盖 71 个 jmod 模块文件支撑 JLink 构建轻量运行时、71 份 license 与 70 份 copyright 法律声明、45 份 Markdown 格式文档含 API 规范与特性说明以及 java、javac、jshell、jfr、jpackage、jwebserver 等全套 JDK 工具链可执行文件与对应 man 手册.1 文件辅以 so 动态库、jar 工具包、security 配置及 modules 系统描述等核心组件完整覆盖编译、调试、性能分析、模块化打包与本地部署全流程。包体大小为 231.9MB结构规范开箱即用。目前已有 114 人学习下载适合需要体验 JDK 24 新特性如虚拟线程增强、结构化并发、Sequenced Collections 等并开展生产级验证的中高级开发者。 如果你手里拿到了一个jdk-24_linux-x64_bin.tar.gz文件那你大概率已经走到 Linux 上安装 JDK 24 的门口了。这个文件名看着长其实信息量很足jdk-24是版本号linux-x64是操作系统和 CPU 架构bin表示二进制发行版tar.gz是压缩打包格式。本篇文章就从这个包讲起把下载、校验、解压、环境变量配置、多版本切换和日常排障完整过一遍。不管你是刚接触 Linux 的新手还是已经配过很多次 JDK 的老手都值得看一眼因为这里面的很多坑不是文档里会告诉你的。1. 先把文件名拆清楚JDK 24、linux-x64、tar.gz 分别意味着什么1.1 JDK 24 不是 LTS但值得上手JDK 24 属于六个月的快速迭代版本发布于 2025 年 3 月它并不是 LTS长期支持版本。如果你的团队非常保守生产环境可能更倾向于使用 JDK 21 或者等待下一个 LTS 版本但如果你只是做开发、学习新技术、或者跑一些不要求很老兼容性的构建任务JDK 24 完全可以用。这一版带来的新特性不少比如紧凑对象头、分代 Shenandoah、提前类加载等有些是性能优化有些是预览特性对喜欢尝鲜的人来说值得在个人开发机或测试环境里装起来试试。不过也要注意非 LTS 版本的更新节奏非常快JDK 24 的主流支持周期不会像 21 那么长。我个人的建议是个人开发机随便装CI 构建环境也可以用但在重要生产服务上尽量别直接上 JDK 24。另外JDK 24 编译出来的 class 文件版本号是 68如果你的构建工具、Spring 版本或者字节码增强库还没适配升级后可能会遇到UnsupportedClassVersionError这往往是最容易被忽视的兼容性坑。所以先弄明白自己的项目能不能直接用再决定要不要装。1.2 tar.gz 比 rpm、deb 更省心很多同学会问为什么 Oracle 官网明明提供 rpm 包我还要推荐tar.gz其实这两种方式各有适用场景。tar.gz本质上就是绿色软件解压到任意目录就能用不需要包管理器参与不依赖你是 CentOS、Ubuntu 还是 Debian也不受 yum、apt 源版本的影响。只要内核和 glibc 能满足要求它就能跑。这对有多版本 JDK 需求的场景特别友好。比如我开发机上装了 JDK 17临时想跑一个需要 JDK 24 的项目用 tar.gz 方式可以同时解压多个版本到不同目录通过环境变量或者软链接切换互不干扰。如果用 rpm 或 deb 装系统会把这些 JDK 纳入包管理器的管辖范围升级、清理、切换都绕一圈反而麻烦。尤其在一台服务器上同时存在多个 Java 项目时tar.gz 这种“各管各目录”的方式最干净。1.3 确认你的系统真的是 x64 架构文件名里写着linux-x64所以安装前一定要确认你的服务器确实是 x86_64 架构。用一条命令就能看出来uname -m如果输出是x86_64说明匹配如果是aarch64那你需要去找linux-aarch64的包硬装 x64 包会直接报Exec format error。现在云服务器大多都是 x64但 Apple Silicon 上跑的 Linux 虚拟机一般是 arm64这时候记得下载对应架构的版本。还有一个容易忽略的点就算系统是 x64也可能因为目标环境是 32 位程序而需要额外的兼容库。JDK 24 官方已经移除了对 32 位 x86 移植的支持所以别再把 x64 包硬塞进 32 位系统里老老实实用 64 位系统省得后面一堆麻烦。2. 下载与安装前校验别把坏包装进系统下载一个看起来没问题的 tar.gz 其实只完成了一半。很多人的第一反应是解压、配置环境变量却忽略了对安装包做完整性校验。尤其是从网络下载的文件一旦下载过程发生损坏后面解压或运行时就会冒出一堆莫名其妙的错误到那时候排查成本远比现在高。2.1 从官网或镜像站拿到安装包JDK 24 的官方下载页面在 Oracle 官网选择 Linux x64 Compressed Archive 就能下载到jdk-24_linux-x64_bin.tar.gz。如果你在官网下载速度不理想或者你的环境不太方便直接访问可以找国内靠谱的镜像站下载。很多云厂商的镜像仓库和开源镜像站都有 JDK 的存档搜索一下基本都能找到。这里提醒一句不要随便在第三方博客或网盘里下载 JDK。虽然文件名看起来完全一样但文件可能被篡改或者捆绑了其他东西。JDK 是开发环境的底层依赖一旦中招你的服务器安全就有风险。我宁可多花两分钟做校验也不愿意把不可信来源的包装进系统。这个习惯很重要尤其是团队内部共用服务器时更要从源头把好关。2.2 SHA256 校验与文件大小核对下载完成后我建议先做 SHA256 校验。官网下载页里每个文件旁边都有对应的 SHA256 值在 Linux 终端执行sha256sum jdk-24_linux-x64_bin.tar.gz把输出结果和官网给出的校验值逐位对比完全一致再继续。如果对不上直接删掉重新下载不要想着“也许能用”。这一步能规避绝大多数因为下载损坏引发的解压错误和运行时崩溃。除了校验值文件大小也可以参考。下载完先看一眼文件大小官网标注是多少 MB偏差超过几 MB 就要警觉起来。镜像站的文件大小一般和官网一致但最终还是要以 SHA256 为准。说实话校验这一步花不了多少时间但能省下后面排查环境问题的大把时间。2.3 安装目录规划/usr/local/jdk-24 还是 /opt/jdk-24我习惯把 JDK 放在/usr/local/下因为这个目录本来就是给本机安装的软件用的符合 Linux 文件系统层次标准。如果你只是个人开发用也可以放在~/下面比如~/software/jdk-24这样不需要 root 权限切换用户也不受影响。无论选择哪个目录我建议把目录名和版本号绑定。解压出来通常就是jdk-24这个目录名就很好。不要重命名成jdk或者java不然以后装 25、26 的时候你根本分不清哪个目录是哪个版本。统一采用“版本号目录 软链接”的方式后面切换版本会轻松很多。比如你可以做一个/usr/local/jdk软链接指到当前默认版本这样JAVA_HOME永远指向/usr/local/jdk真正要切换版本时只改软链接即可。3. 解压、安装、配环境的完整实操流程接下来进入正题从解压到环境变量配置我会把每一步命令都写出来并解释为什么这么做。这样你不仅当下能用以后遇到类似问题也能举一反三。3.1 解压并移动到目标目录假设你现在已经把安装包下载到了/usr/local/src目录下先解压tar -xzf jdk-24_linux-x64_bin.tar.gztar是 linux 常用命令里非常高频的一个。-x表示解压-z表示通过 gzip 解压-f指定文件名。这三个参数加上文件名就已经覆盖了绝大多数解压场景。解压完成后当前目录会生成一个jdk-24文件夹。接着把它移动到安装目录sudo mv jdk-24 /usr/local/这样你的 JDK 主目录就是/usr/local/jdk-24。移动这一步不是必须的你完全可以在下载目录里直接用但长期来看统一目录能让配置更清晰。以后写启动脚本、配 systemd 服务或者做备份的时候不需要到处找 JDK 在哪个临时目录。移动完成后可以用ls -ld /usr/local/jdk-24确认目录存在且权限正确。3.2 JAVA_HOME 与 PATH 配置用户级和系统级怎么选JDK 解压完还不能直接用因为 shell 不知道java在哪里。需要设置两个环境变量JAVA_HOME和PATH。JAVA_HOME指向 JDK 的根目录PATH里加入$JAVA_HOME/bin这样你输入java、javac时系统才会找到对应命令。如果你只给自己用改~/.bashrc就够echo export JAVA_HOME/usr/local/jdk-24 ~/.bashrc echo export PATH$JAVA_HOME/bin:$PATH ~/.bashrc source ~/.bashrc如果整台服务器多个用户都要用就改/etc/profileecho export JAVA_HOME/usr/local/jdk-24 | sudo tee -a /etc/profile echo export PATH$JAVA_HOME/bin:$PATH | sudo tee -a /etc/profile source /etc/profile这里有个细节必须强调PATH一定要写成$JAVA_HOME/bin:$PATH把 JDK 的 bin 放在所有已有路径的前面。这样系统会优先使用你新配置的 JDK而不是/usr/bin/java里那个旧的版本。很多人踩坑就是只加了PATH没带$JAVA_HOME或者把 JDK 路径放在了后面导致命令找到的还是老版本。另外如果你用的是 zsh就要改~/.zshrc而不是~/.bashrc。现在很多开发机的默认 shell 是 zsh改错文件后怎么 source 都没效果。这种问题属于“忙活半天才发现改错地方”其实一开始看一眼echo $SHELL就能避免。3.3 让配置立即生效并验证 java、javac配置完必须让当前终端重新加载配置文件。source只针对当前 shell 生效重开终端也自然会加载但如果你想立刻验证就执行source ~/.bashrc或者source /etc/profile。然后验证java -version javac -version echo $JAVA_HOME正常情况下java -version会输出类似openjdk version 24 2025-03-18 OpenJDK Runtime Environment (build 2436-...) OpenJDK 64-Bit Server VM (build 2436-..., mixed mode, sharing)看到版本号是 24说明安装成功。javac也要确认一下很多人装了 JDK 之后java能用但javac报错多半是PATH里没包含正确目录或者/usr/bin/javac被其他包占用了。验证通过后你的 JDK 24 就算真正能用了。如果echo $JAVA_HOME输出为空那不管java -version显示什么都说明环境变量还没配置好需要回头检查配置文件。4. 多版本 JDK 切换update-alternatives 与软链接技巧长期和 Java 打交道的同学机器上大概率不止一个 JDK。项目 A 用 17项目 B 要 21有时候心血来潮试一下 24。如果每次手动把JAVA_HOME改来改去早晚会出错。解决办法有两个用update-alternatives或者自己写切换脚本。4.1 用 update-alternatives 管理全局默认版本update-alternatives是 Debian/Ubuntu 系自带的工具CentOS/RHEL 上也有alternatives用法类似。它能管理同一个命令的多个候选路径。先把你安装的 JDK 24 加入候选sudo update-alternatives --install /usr/bin/java java /usr/local/jdk-24/bin/java 2400 sudo update-alternatives --install /usr/bin/javac javac /usr/local/jdk-24/bin/javac 24002400是优先级数字越大优先级越高。如果你机器上还有其他 JDK也可以用同样的方式加进去。随后用交互式命令切换sudo update-alternatives --config java sudo update-alternatives --config javac它会列出所有候选版本输入序号回车就会自动把/usr/bin/java的软链接切到对应版本。这个工具的好处是全局生效切换时不用动/etc/profile。不过它只管/usr/bin下的软链接不会自动改JAVA_HOME。如果你的项目强依赖JAVA_HOME环境变量还是需要在 shell 配置里手动调整或者用软链接方式统一入口。4.2 写一个自动切换脚本比手动改 PATH 靠谱我个人更习惯写一个简单的函数或脚本专门用来切 JDK 版本。比如在~/.bashrc里加一个setjdk函数setjdk() { export JAVA_HOME/usr/local/$1 export PATH$JAVA_HOME/bin:$PATH java -version }然后你只需要输入setjdk jdk-24就能把当前 shell 切到指定版本。这个方式足够轻量对只在当前终端跑临时命令的场景非常合适。如果想让某条命令永久生效把setjdk的调用写进~/.bashrc就行。这个思路其实用的是环境变量加软链接组合拳。生产环境里更多人会把/usr/local/jdk做成软链接指向当前版本目录然后让JAVA_HOME永远指向/usr/local/jdk。要升级 JDK 时只需要替换软链接服务重启一下配置文件完全不用动。这个方法非常值得推广尤其是在集群环境里所有节点都用同一个软链接路径部署脚本会简单很多。5. 常见问题与排查技巧实录配置 JDK 的过程看似简单但实际总会出点幺蛾子。我把自己见过的高频问题整理在这里基本都是实战中遇到的不是网上复制来的理论。5.1 解压报错或解压后不能运行最常见的是tar -xzf解压时报gzip: stdin: not in gzip format。这说明文件并不是有效的 tar.gz 压缩包可能下载了一半或者内容被改动过。解决办法是先删掉重新下载再校验 SHA256。如果使用tar -xzf还是报错可以试试file jdk-24_linux-x64_bin.tar.gz看它到底是个什么格式的文件。有时候下载回来一个 html 错误页面文件也会是这个症状。还有一种情况是解压没问题但执行java -version报bash: /usr/local/jdk-24/bin/java: cannot execute binary file: Exec format error。这是架构不匹配的典型症状说明你的系统不是 x64而是 arm64 或其他架构。执行uname -m确认一下然后去下载对应架构的包。这类问题很常见尤其在使用苹果 M 系列芯片跑 Linux 虚拟机时不少人会下意识下载 x64 包结果一跑就报错。5.2 环境变量明明改了却不生效环境变量不生效绝大多数原因是改错了配置文件或者没有重新加载。你可以先看当前 shell 是不是 bashecho $SHELL如果输出/bin/zsh那你改~/.bashrc就完全没用必须改~/.zshrc。如果是通过 SSH 登录的系统用户还要注意/etc/profile和~/.profile的优先级关系有些发行版的 bash 加载顺序很乱可以顺手看下/etc/profile.d/目录里有没有被脚本覆盖。排查的时候先执行echo $JAVA_HOME和which java。如果JAVA_HOME是空的说明配置没写进去。如果JAVA_HOME有值但which java指向/usr/bin/java说明PATH里/usr/bin排在前面你要确保$JAVA_HOME/bin在PATH的最前面。另一个常见问题是 SSH 登录时~/.bashrc里写了exit或者条件判断导致后面的环境变量没加载到这类问题排查起来比较绕建议先打开配置文件看一眼结构。5.3 java -version 显示出来不是想要的版本这个和上一条相关。你明明安装了 JDK 24但java -version显示的是 1.8 或者 17。先用which java看一下执行路径which java readlink -f $(which java)如果路径是/usr/bin/java那说明系统里还有另一个 JDK 通过包管理器装过比如java-1.8.0-openjdk。这时候要么用update-alternatives把优先顺序调整过来要么把$JAVA_HOME/bin放在PATH前面。还有一种隐蔽情况你配置完~/.bashrc后又用sudo -i进入 root 环境root 环境重新加载的是/root/.bashrc和你普通用户的配置是两套所以会出现“明明配置了sudo 后却变了”的诡异现象。还有一个隐蔽问题有些服务的启动脚本会强制读取/etc/alternatives/java或者JAVA_HOME环境变量如果你的JAVA_HOME还是旧的服务启动时就会用旧版本。改完环境变量后建议把服务进程也重启不要只测java -version就以为万事大吉。5.4 权限问题和系统依赖缺失如果你用普通用户安装到/usr/local/没有 sudo 权限会报Permission denied。解决方法是给当前用户加 sudo或者把安装目录改到用户目录下。还有种情况解压出来的文件所属组和权限不对虽然能解压但执行时被拒绝。可以检查一下目录权限ls -ld /usr/local/jdk-24如果其他用户没有执行权限用 chmod 补上sudo chmod -R 755 /usr/local/jdk-24另外极少数精简版 Linux 系统缺少 glibc 或 libjli.so 的依赖运行java时会报error while loading shared libraries。这时候可以先确认系统的库依赖能否解析ldd /usr/local/jdk-24/bin/java缺什么库就通过发行版自带的包管理器安装。JDK 24 对系统 glibc 版本有最低要求太老的系统底层库带不动就需要先升级系统基础环境。这类问题在云上的旧镜像里尤其常见我遇到过不止一次。遇到这种报错别慌按提示安装依赖库就行。6. 卸载、清理与一条脚本装机最后聊聊怎么卸载以及怎么把整个安装过程脚本化。这两个问题听起来不大但实际项目里很常见你在一台机器上装过旧版 JDK后来要换新版本没清理干净就会遇到各种诡异问题。6.1 干净卸载 JDK 24用 tar.gz 方式安装的 JDK卸载非常简单删除目录清理环境变量。不会有包管理器里的残存记录。sudo rm -rf /usr/local/jdk-24然后从/etc/profile或~/.bashrc里删掉之前添加的那几行export。如果你用的是update-alternatives还要移除对应的候选sudo update-alternatives --remove java /usr/local/jdk-24/bin/java sudo update-alternatives --remove javac /usr/local/jdk-24/bin/javac最后重开一个终端输入java -version看看是否还有残留旧路径。如果which java已经找不到命令了说明清理干净了。如果真的还有再检查一下/etc/alternatives下的软链接和/usr/bin下有没有遗留。很多人卸载 JDK 只删目录忽略环境变量清理结果重装新版本后JAVA_HOME还是指向旧路径折腾半天才发现是残留配置在捣乱。6.2 一条脚本快速安装并配置 JDK 24如果你需要在一批 Linux x64 服务器上装 JDK手动操作太累。可以提前写一个安装脚本我放一个基础版本在这里你需要的时候改一下下载地址和目录就行#!/bin/bash set -e JDK_TARjdk-24_linux-x64_bin.tar.gz JDK_DIR/usr/local/jdk-24 DOWNLOAD_URLhttps://download.oracle.com/java/24/latest/${JDK_TAR} # 1. 下载并校验这里用官网校验值替换实际值 wget -O /tmp/${JDK_TAR} ${DOWNLOAD_URL} # sha256sum /tmp/${JDK_TAR} # 2. 解压并移动 cd /tmp tar -xzf ${JDK_TAR} sudo mv jdk-24 ${JDK_DIR} # 3. 配置环境变量 if ! grep -q JAVA_HOME${JDK_DIR} /etc/profile; then echo export JAVA_HOME${JDK_DIR} | sudo tee -a /etc/profile echo export PATH\$JAVA_HOME/bin:\$PATH | sudo tee -a /etc/profile fi # 4. 立即生效并验证 source /etc/profile java -version javac -version脚本里的校验值那一行我留了注释实际使用建议填上准确的 SHA256否则下载链路有风险。这脚本只适用于 x64 Linux架构不同记得替换 JDK 目录名和下载链接。如果你用 Ansible 或者其他配置管理工具还可以把这段逻辑封装成 task跑几十台服务器也就几秒钟的事。6.3 容器环境下的使用注意如果你把 JDK 24 用在 Docker 镜像里思路和物理机安装类似但更推荐直接用官方镜像。比如eclipse-temurin或azul/zulu-openjdk都有对应 24 版本的 tagFROM eclipse-temurin:24-jdk就能直接拿到一个配置好的 JDK 24 环境。不过你自己写 Dockerfile 的时候依然要注意架构匹配。docker build时--platform linux/amd64和linux/arm64使用的 JDK 包不同别拿 x64 包硬塞到 arm64 容器里。另外容器内一般不建议做什么花哨的环境变量配置直接在ENV里声明JAVA_HOME和PATH即可保持镜像干净最重要。容器本质上是一次性环境每次启动都从基础镜像重新创建所以没必要像物理机那样保存太多版本。我个人在实际操作中比较喜欢把需要经常在命令行用的开源软件做成 tar.gz 方式既好备份也好迁移。这套 JDK 24 的安装流程看着简单但每次遇到环境变量不生效或者多版本冲突都能回头审视一下是不是哪条路径写错了。只要记住三个关键点下载完校验、目录按版本命名、PATH 里把 JDK 的 bin 放前面基本就不会出大问题。最后再分享一个小技巧配置的时候别急着敲source先关掉终端再重新开一个。因为有些环境变量管理器比如登录 shell 下的/etc/profile.d/*.sh会在新终端启动时额外做手脚你强制 source 可能测不出来真实效果。干净的新终端下java -version没有问题那才是真的稳定了。本文还有配套的精品资源点击获取
返回列表