☰
JDK 24 Linux tar.gz 下载安装配置全攻略,环境变量与多版本切换详解
2026/10/19 11:30:03 网站建设 项目流程

简介:本资源为 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 等)及其 man 手册(.1 文件)、本地化资源与安全配置(cacerts、java.security、*.policy)。整体包体大小为 231.9MB,结构规范、开箱即用,完整保留 JDK 24 的模块化布局与原生工具链。目前已有 114 人学习下载,适合需要体验虚拟线程增强、结构化并发、未命名变量与模式匹配等 JDK 24 新特性的开发者快速部署验证环境。

jdk-24_linux-x64_bin.tar.gz 从下载到配置,这篇把 Linux 装 JDK 的坑一次说透

看到jdk-24_linux-x64_bin.tar.gz这个文件名,估计不少刚接触 Linux 的同学有点发怵——名字里每个单词都认识,但合在一起就不知道从哪下手。这其实就是一个标准的 JDK 24 安装包,面向 Linux x64 平台,采用 tar.gz 压缩格式发布。比起 Windows 上的 exe 安装包,tar.gz 是个免安装的绿色版,解压就能用,配置也全靠自己动手,所以很多第一次用 Linux 的朋友会在这里卡住。

这篇博文我从实际运维和开发的角度,把 JDK 24 的下载、校验、解压、目录规划、环境变量配置、多版本切换到常见故障排查全流程过一遍。你不需要有深厚的基础,只要会敲 Linux 命令,跟着步骤走就能把环境跑起来。这篇文章既适合刚转到 Linux 开发的新手,也适合要给服务器或本机装 JDK 的运维、测试、数据分析同学参考。

1 下载前必须想清楚的几件事

1.1 为什么选 tar.gz 而不是 rpm 或 deb

在 README 或官网下载页上,你通常会看到多种格式的 JDK 包。很多第一次接触的人会直接问:既然有 rpm 和 deb,为什么还要折腾 tar.gz?

关键原因在于使用场景和权限控制。rpm 和 deb 是发行版自带的包管理格式,安装后会按照系统规范把文件散落到/usr/lib/jvm、/etc/profile.d等目录,还有专门的卸载和升级机制。对这些格式,你需要 root 权限,而且安装位置、JDK 的默认路径基本由系统决定。tar.gz 则完全是个"绿色软件包",解压到任意目录就能用,不写入系统目录、不污染其他环境,适合需要在多个 JDK 版本之间切换、或者没有 root 权限的普通用户场景。

还有一个很实际的优势:同一份 tar.gz 包,放到 CentOS、Ubuntu、Debian、openEuler 上都能直接解压运行,不受发行版包管理器的限制。rpm 在 Debian 系上就跑不动,deb 在 Red Hat 系上也不行。所以如果你经常在多台不同发行版的机器上部署环境,tar.gz 是通用性最强的方案。

1.2 下载渠道的选择与校验

JDK 24 的发布渠道有几种:Oracle 官方(需要登录 Oracle Account)、Adoptium(也就是 Eclipse Temurin,完全开源免费)、Azul Zulu、Amazon Corretto 等。从实用角度,我个人建议优先用 Adoptium,原因很简单:它提供长期支持、免费商用、更新及时,而且没有 Oracle 官方那个登录墙。下载时直接抓 API 返回的 tar.gz 链接:

# 以 Adoptium API 为例,下载 JDK 24 的 Linux x64 包 wget https://api.adoptium.net/v3/binary/latest/24/ga/linux/x64/jdk/hotspot/normal/eclipse

如果确实需要 Oracle 版本,需要注意 Oracle 官网下载的时候有 cookie 校验,直接 wget 链接经常返回 403。解决办法是先让浏览器完成下载,或者用带 User-Agent 的 wget 参数。不过社区贡献的 OpenJDK 构建在绝大多数场景下已经够用了。

下载完成之后务必做完整性校验。tar.gz 包如果在中途断点续传后损坏,解压时会报gzip: invalid compressed data之类的错误,所以最好下载对应的.sha256校验文件或拿到官方 SHA-256 摘要:

# 计算本地文件哈希 sha256sum jdk-24_linux-x64_bin.tar.gz # 将输出与官方公布的摘要比对,一致再继续后续操作

1.3 确认你的 Linux 是 x64 还是 ARM64

标题里的x64指的是 CPU 架构。现在不少开发者在 ARM 架构的机器上跑 Linux,比如 Apple Silicon 的虚拟机和部分国产 ARM 服务器,这种情况下安装 x64 包会直接报 "Exec format error" 或者 "cannot execute binary file"。所以拿到包之前先确认一下系统架构:

uname -m # 输出 x86_64 说明是 x64 架构 # 输出 aarch64 说明是 ARM64,需要下载 aarch64 版本

这一步看着简单,但很多项目部署出问题就栽在架构不匹配上。JDK 24 官方同时发布了 x64 和 aarch64 的 tar.gz 包,命名规律一致,只有架构字段不同,按照系统实际架构选包就不会错。

2 解压安装与目录规划实操

2.1 安装目录放哪里比较合适

tar.gz 不需要运行安装程序,解压即完成安装,但"放到哪个目录"还是有讲究的。Linux 下常见的 JDK 安装目录有几种选择:

  • /usr/lib/jvm:很多发行版默认 JDK 位置,适合 rpm/deb 安装的场景
  • /opt/java或/opt/jdk:第三方软件普遍推荐的安装目录
  • ~/jdk或~/tools/jdk:用户级安装,不需要 root 权限

我个人的习惯是统一放在/opt/java下,因为这个目录本身就用于存放独立于系统包的第三方软件,权限清晰、结构统一。如果你是没有 root 权限的普通用户,那就放自己的家目录,原理一样。

先创建目录,然后把安装包传过去(本地文件用 scp 或 U 盘,服务器上也可以直接从网络拉取):

# 创建安装目录(需要 root 权限) sudo mkdir -p /opt/java # 将安装包复制到 /opt/java,或用 wget 直接下载到该目录 # 下面切换到安装目录并解压 cd /opt/java tar -xzf jdk-24_linux-x64_bin.tar.gz

解压之后会在/opt/java下生成一个jdk-24之类的目录,这个就是 JDK 的主目录,也叫做 JDK 的根目录(JAVA_HOME指向的就是它)。

2.2 解压后目录结构长什么样

解压完成之后,进入jdk-24目录用ls -l看一下,你会看到下面这些核心子目录:

目录作用
bin存放所有可执行工具,包括java、javac、javap、jar等
lib存放动态链接库、类库,modules文件也在里面
conf存放 JDK 的配置文件(如security/java.security、logging.properties)
include存放 C 语言头文件,用于 JNI 开发
legal存放各类开源许可证
jmods存放 JMOD 格式的模块文件,用于 jlink 自定义运行时
man存放 man 手册,方便man java查看帮助

对于日常使用者来说,最重要的是bin目录。这里面的文件就是将来输入java、javac时实际执行的程序。有个细节值得注意:bin下的java本身是一个启动器,它负责加载 JVM,然后根据java命令后面的参数运行对应的类或 jar 包。这个启动器会从JAVA_HOME或java可执行文件自身所在路径反推 JDK 根目录,这也是为什么我们要把JAVA_HOME设置准确。

2.3 解压之后的权限问题

解压时用的是tar,文件的属主会保留打包时的用户。如果解压时用的是普通用户,那文件属主就是你自己,这对用户级安装没问题;如果是在/opt/java下用 root 解压的,普通用户理论上也能读能执行,只是没有写的权限。

实际开发中经常会遇到一种情况:IDE 或构建工具需要对 JDK 的某些目录有写权限(比如 JVM 在特定场景下会生成临时文件),或者你要在同一台机器上给多个用户共享这个 JDK。这时候可以修改目录属主,或者至少保证其他用户有r-x权限。一劳永逸的做法是:

# 将 jdk-24 目录属主改成 linux 用户,方便统一管理 sudo chown -R linux:linux /opt/java/jdk-24

如果不想改属主,确保目录权限为 755 也能正常使用:sudo chmod -R 755 /opt/java/jdk-24。

3 环境变量配置:让系统找到 java 命令

3.1 理解 PATH 和环境变量的关系

解压只是把 JDK 文件放在磁盘上,系统并不知道去哪里找java。你直接敲java -version大概率会得到command not found。原因很简单:Shell 执行命令时,会在PATH环境变量列出的目录里逐一搜索可执行文件,而/opt/java/jdk-24/bin并不在默认的PATH中。

我们需要做的有两件事:一是把 JDK 根目录记录下来,也就是设置JAVA_HOME环境变量,方便其他依赖 JDK 路径的工具(如 Maven、Gradle、IDEA)查找;二是把$JAVA_HOME/bin加到PATH中,让 Shell 能找到java、javac这些命令。

这里有个概念要区分清楚:JAVA_HOME是很多 Java 生态工具(比如 Maven、Tomcat)读取的约定环境变量,JDK 自己并不强制依赖它;而PATH才是系统解析命令时实际查找的路径列表。所以两个都要配,缺一个都会在后续使用中踩坑。

3.2 配置文件的选用与全局 vs 用户级

Linux 下配置环境变量的文件有很多个,选错文件会出现"明明配了却不生效"或"换个用户就找不到 java"的诡异情况。简单区分一下:

  • /etc/profile:系统级,所有用户登录时都会加载,通常还会加载/etc/profile.d/下的脚本
  • /etc/profile.d/*.sh:系统级脚本目录,比直接改/etc/profile更规范
  • ~/.bashrc:当前用户每次打开新终端时加载
  • ~/.bash_profile或~/.profile:当前用户登录时加载

推荐做法是在/etc/profile.d/下新建一个专门的脚本文件,例如java.sh。这样既实现系统级配置,又不会把/etc/profile改得乱七八糟,升级或卸载时直接删掉一个文件就行:

# 创建脚本(需要 root 权限) sudo vim /etc/profile.d/java.sh

写入以下内容:

export JAVA_HOME=/opt/java/jdk-24 export PATH=$JAVA_HOME/bin:$PATH

如果只是在个人用户下开发,不涉及多用户,也可以把上面两行写入~/.bashrc末尾,效果一样,只是作用域不同。

注意:PATH=$JAVA_HOME/bin:$PATH里,$PATH一定要放在后面,这样才能把 JDK 的命令放在搜索路径的前面,避免系统里其他版本的 java(比如/usr/bin/java)抢先被找到。这是一个常见但很容易被忽视的细节。

3.3 让配置立即生效并验证安装结果

修改完配置文件之后不会立即生效,需要重新加载。重新登录当然可以,但更快速的办法是用source命令:

source /etc/profile.d/java.sh

如果是在~/.bashrc里配置的,就执行:

source ~/.bashrc

然后验证安装结果。依次执行下面几条命令:

java -version javac -version which java echo $JAVA_HOME

正常情况下,java -version会输出类似下面的信息:

openjdk version "24" 2025-03-18 OpenJDK Runtime Environment (build 24+36-...) OpenJDK 64-Bit Server VM (build 24+36-..., mixed mode, sharing)

which java应该指向$JAVA_HOME/bin/java,而不是/usr/bin/java或其他路径。如果这些都对了,说明 JDK 24 已经在当前 Shell 环境中正常工作。

3.4 为什么 javac 和 java 版本要一致

在排查环境问题时,很多人会单独执行java -version和javac -version,发现竟然不一样。这种情况多出现在系统里同时安装了多个 JDK,或者是JAVA_HOME指向的目录里没有javac(只有 JRE)。

JDK 24 已经把 JRE 和 JDK 合并发布,不再单独提供 JRE 下载,所以正常情况下bin目录里是同时有java和javac的。如果你输入javac时报command not found,而java正常,说明JAVA_HOME指错了位置,或者 PATH 搜索到了别的 java。解决办法是检查JAVA_HOME路径下是否存在bin/javac,并把 PATH 顺序理清楚。

4 多版本 JDK 共存与灵活切换

4.1 一个系统装多个 JDK 是常态

现实中很多开发者的机器上不止一个 JDK。老项目跑在 JDK 8 上,新项目要求 JDK 17 或 21,现在又来了 JDK 24,想尝鲜又不敢全量迁移。tar.gz 解压即用的特性让多版本共存变得异常简单,每一个版本就是一个独立目录,互不干扰。

以我目前的机器为例,/opt/java下有jdk-8、jdk-17、jdk-21、jdk-24四个目录,每个都是完整独立的 JDK。需要切换时,只要修改JAVA_HOME和PATH的指向即可,整个过程不涉及任何卸载操作。

4.2 使用 alternatives 管理全局版本

在 Red Hat 系(CentOS、Rocky、Fedora)和部分 Debian 系系统上,update-alternatives是管理默认命令版本的规范工具。它通过软链接的方式,把/usr/bin/java、/usr/bin/javac这些命令链接到指定 JDK 的可执行文件上。

先手动注册 JDK 24 到 alternatives:

sudo update-alternatives --install /usr/bin/java java /opt/java/jdk-24/bin/java 1 sudo update-alternatives --install /usr/bin/javac javac /opt/java/jdk-24/bin/javac 1

然后通过下面的命令交互式选择默认版本:

sudo update-alternatives --config java sudo update-alternatives --config javac

执行后系统会列出所有已注册的 Java 版本,输入对应编号回车即可切换。这个方案适合系统级默认版本的管理,但对普通用户来说有点重,而且每次都只对当前注册的命令生效,环境变量JAVA_HOME不会自动跟着变。

4.3 轻量级手动切换法

我个人更常用的是写一个切换脚本,或者直接在~/.bashrc里维护几个函数,让切换变成一条命令的事。下面是核心逻辑,做法是定义一个别名或函数,动态修改JAVA_HOME:

setjdk() { if [ -d "/opt/java/jdk-$1" ]; then export JAVA_HOME=/opt/java/jdk-$1 export PATH=$JAVA_HOME/bin:$PATH java -version else echo "未找到 /opt/java/jdk-$1 目录" fi }

把这个函数放到~/.bashrc里,然后执行:

source ~/.bashrc # 切换到 JDK 17 setjdk 17 # 切回 JDK 24 setjdk 24

这种方式的好处是:切换只影响当前用户、当前 Shell,不会影响系统其他用户,切换速度也快,不依赖 root 权限,特别适合在同一台机器上并行开发多个项目的场景。实际使用时,项目 A 的终端开一个窗口,切到 JDK 17;项目 B 的终端开另一个窗口,切到 JDK 21,互不干扰。

4.4 JAVA_HOME 泄露问题排查

切换 JDK 的时候容易忽略一个重要细节——JAVA_HOME的环境变量可能在其他地方被写死了。比如很多 IDE 的启动脚本、构建工具的setenv.sh、或者容器镜像里的 ENV 指令,都会显式指定JAVA_HOME。这就导致你终端里手工切换成功了,但启动 Tomcat 或运行 Maven 时,它读到的仍是配置文件中写死的路径。

遇到这种情况,多方位确认当前实际生效的 JAVA_HOME:

# 检查当前 shell 里的值 echo $JAVA_HOME # 检查是否有全局配置覆盖 grep -r "JAVA_HOME" /etc/profile /etc/profile.d/ ~/.bashrc ~/.bash_profile 2>/dev/null

如果构建工具是 Maven,再看一下$MAVEN_HOME/bin/mvn脚本里的 JAVA_HOME 逻辑。很多启动脚本会优先读取自己的配置文件,而不是直接使用系统环境变量。

5 常见问题与排查技巧实录

5.1 java -version 显示旧版本

这是最经典的问题:你明明安装了 JDK 24,也配置了环境变量,但一敲java -version显示的却是 1.8 或 11。

原因基本可以锁定在 PATH 搜索顺序上。Shell 查找命令时是按照PATH变量中目录的先后顺序逐一搜索的,如果/usr/bin/java排在$JAVA_HOME/bin前面,那么系统找到的永远是/usr/bin/java。

排查步骤:

# 1. 看当前用的 java 是哪个路径 which java # 2. 查看 PATH 中目录顺序 echo $PATH # 3. 查看系统默认安装的 java ls -l /usr/bin/java*

解决办法是把$JAVA_HOME/bin放在 PATH 最前端,同时彻底移除其他版本的软链接配置。如果系统里存在/usr/bin/java这类软链接,必要时可以用sudo unlink /usr/bin/java移除(前提是确认不需要系统自带的版本)。

5.2 source 之后仍然 command not found

配置写了,source也执行了,但一开新终端又找不到 java。这种情况十有八九是配置写入的文件不对。

例如你把配置写进了~/.bashrc,但当前用户使用的是 zsh,那么新打开的 zsh 终端不会加载.bashrc,只会加载~/.zshrc。解决办法是把配置写入~/.zshrc,或者在.zshrc中显式添加source ~/.bashrc。

如果是登录 Shell 的环境(比如通过 SSH 登录),可能还需要看一眼~/.bash_profile或/etc/profile的加载路径。一般~/.bash_profile里默认会加载~/.bashrc,但如果被自定义修改过,就可能跳过。

5.3 报错 Cannot execute binary file

这个报错基本可以断定是架构不匹配。你把 x64 的 tar.gz 包解压到了 ARM64 系统上,直接运行二进制文件就会遇到这个错误。确认方式:

uname -m file /opt/java/jdk-24/bin/java

file命令会输出这个二进制文件的架构信息,如果是x86-64但系统是aarch64,下载对应 aarch64 版本重新解压即可。

5.4 字符编码和 locale 警告

Java 启动时偶尔会输出类似下面的警告:

Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8

这通常是因为环境变量JAVA_TOOL_OPTIONS被设置了,或系统 locale 配置不完整。如果影响不大可以忽略,但如果你希望彻底控制编码行为,可以使用JAVA_TOOL_OPTIONS或_JAVA_OPTIONS设置 JVM 参数:

export _JAVA_OPTIONS="-Dfile.encoding=UTF-8"

不过这里有个坑:设置_JAVA_OPTIONS之后,每次运行 java 命令都会在控制台输出一行提示,有些脚本在解析输出时会出问题。如果不需要特殊参数,可以不设置它,保持默认即可。

5.5 普通用户装完没有写权限

开发时经常遇到 IDE 或构建工具往~/.m2、/tmp等目录写缓存,这跟 JDK 安装目录本身没有直接关系。但如果你的项目用到了 jlink 自定义运行时,或者某些框架需要写 JDK 的lib目录,就会遇到权限不够的问题。JLink 在生成自定义运行时时默认会写到当前用户目录,不会动 JDK 本体,所以这种情况相对少见。遇到时,用chown或chmod调整 JDK 目录权限,或者直接在项目目录下操作,不要依赖修改 JDK 本体目录。

5.6 图形界面程序启动异常

如果只用java -jar跑普通的命令行程序或服务器,不用关心图形界面。但在 Linux 桌面环境跑 JavaFX 或其他 GUI 程序时,可能会遇到缺少图形库的报错,比如java.lang.UnsatisfiedLinkError或者无法连接 X server。这是系统层面的依赖问题,跟 JDK 24 本身无关,需要安装对应的图形库(如libX11、libXext、libXi)和字体库:

# Debian/Ubuntu 示例 sudo apt install libx11-dev libxext-dev libxi-dev libxtst-dev libxrender-dev # Red Hat/CentOS 示例 sudo yum install libX11-devel libXext-devel libXi-devel libXtst-devel libXrender-devel

6 实际使用中的几点补充建议

写到这里,JDK 24 tar.gz 安装和配置的核心流程已经完整走了一遍。最后补充几个我在实际环境中常用的习惯,不算教程,但能帮你少走弯路。

第一个习惯是安装完立刻用java -XshowSettings:properties -version看一遍 JVM 的默认属性。这条命令会输出java.home、java.version、java.class.path、user.dir等关键信息,比单纯-version确认得更细致。如果看到java.home不是你的预期路径,说明JAVA_HOME或 PATH 还有问题,趁早查,不然等跑起项目再发现就晚了。

第二个习惯是写一个简单的检查脚本,把验证命令串起来,避免每次装完 JDK 都手敲一遍。比如:

#!/bin/bash echo "JAVA_HOME=$JAVA_HOME" which java java -version 2>&1 javac -version 2>&1

保存为check-jdk.sh,以后换新机器、新服务器,一条命令就能确认环境是否就绪。

第三个习惯跟 IDE 有关。无论你用 IDEA 还是 Eclipse,建议在 IDE 里手动指定 JDK 路径,而不是完全依赖系统环境变量。比如在 IDEA 的Project Structure -> SDKs里新增一个 SDK,路径填/opt/java/jdk-24。这样做的好处是 IDE 有自己的 JDK 缓存体系,即使系统默认 JDK 切换了,项目构建也能保持稳定,不会被环境变量变化波及。

最后一个提醒是升级节奏。JDK 24 属于非 LTS 版本,后续 JDK 25 LTS 发布后,长期项目建议优先考虑 LTS 版本。不过如果你只是想在本地体验新特性,或者项目用到的框架已经支持,那么 JDK 24 完全可以直接使用。安装方式一模一样,只是解压目录换个名字而已。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询