商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > Linux怎么安装JDK17 Linux配置Java环境变量详细步骤

Linux怎么安装JDK17 Linux配置Java环境变量详细步骤

  发布于2026-05-21 阅读(0)

扫一扫,手机访问

遇到系统提示 ja va: command not foundJA VA_HOME is not set,基本可以断定是JDK 17没装好,或者环境变量没配对。问题核心往往不在于下载速度,而在于路径是否写对、变量是否生效、以及所有shell终端是否都能识别。

确认系统类型和架构再动手

装错包或用错命令,后面所有步骤都白费。动手前,先运行两行命令确认系统信息:

cat /etc/os-release | grep -E "(NAME|VERSION_ID)"
uname -m

如果 uname -m 输出是 x86_64,就选择x64版本的安装包;如果是 aarch64(常见于树莓派或新的Mac服务器),则必须下载ARM64版本,否则解压后运行 ja va -version 会报 cannot execute binary file 错误。

对于常见的Linux发行版,可以通过包管理器快速安装:

  • Ubuntu/Debian:使用 apt install openjdk-17-jdk
  • CentOS 8+/RHEL 8+:使用 dnf install ja va-17-openjdk-devel
  • CentOS 7:使用 yum install ja va-17-openjdk-devel,但需注意仓库需要先启用 epel(通过 sudo yum install epel-release

手动安装时 JA VA_HOME 必须指向 JDK 根目录,不是 bin 子目录

这是最容易踩的坑。不少人误将 JA VA_HOME 设置为 /opt/jdk-17.0.1/bin,结果虽然 ja vac 命令能运行,但Ma ven、Gradle、IDEA等工具会集体报错,提示找不到tools.jar或模块解析失败。

正确的做法是:

  • 解压后进入目录查看结构:ls -F /opt/jdk-17.0.1/,确认存在 bin/lib/jmods/ 等子目录。
  • JA VA_HOME 的值必须设置为该目录本身的路径,例如 /opt/jdk-17.0.1
  • 不要直接用 which ja va 的结果反推——它返回的可能是多层软链接的目标路径;更稳妥的方式是使用命令:readlink -f $(which ja va) | sed 's|/bin/ja va$||'

环境变量设置示例(假设JDK解压到 /opt/jdk-17.0.1):

export JA VA_HOME=/opt/jdk-17.0.1
export PATH=$JA VA_HOME/bin:$PATH

/etc/profile.d/ja va.sh 比直接改 /etc/profile 更安全

在全局配置文件里直接塞入几行环境变量,在系统升级或重装shell时容易被覆盖或引发冲突。而 /etc/profile.d/ 目录是专门用于存放模块化环境变量脚本的地方,以 .sh 结尾的脚本会被系统自动加载,彼此独立管理,互不干扰。

操作步骤如下:

  • sudo nano /etc/profile.d/ja va.sh
  • 只需写入两行(JDK 9+ 之后,CLASSPATH 已基本弃用,无需配置):
    export JA VA_HOME=/usr/lib/jvm/ja va-17
    export PATH=$JA VA_HOME/bin:$PATH
  • sudo chmod +x /etc/profile.d/ja va.sh(部分shell环境要求脚本具有可执行权限)
  • 打开一个新的终端窗口进行验证:运行 echo $JA VA_HOMEja va -version

注意:如果之前在用户家目录的 ~/.bashrc 文件里也配置过环境变量,其优先级可能会覆盖系统级设置。测试时记得使用全新的登录shell,或者通过 su - $USER 命令切换用户,以避免环境变量缓存带来的干扰。

验证必须覆盖三个层面:命令、变量、权限

仅仅运行 ja va -version 成功,并不代表环境就完全没问题。还需要检查以下几个方面:

  • ja vac -version:确认安装的是完整的JDK(而非仅JRE),因为有些包管理器默认不安装编译器,ja vac 命令可能缺失。
  • echo $JA VA_HOME:确保该变量的值非空、是绝对路径且没有拼写错误(例如误写为 JA VA_HOEM)。
  • ls -l $JA VA_HOME/bin/ja va:确保ja va可执行文件存在,并且拥有执行权限(权限显示应为 -rwxr-xr-x),否则可能是解压时权限丢失或受到SELinux限制。
  • 对于非交互式场景(如systemd服务、crontab定时任务):这些场景不会读取 ~/.bashrc,只认 /etc/profile.d/ 下的配置或服务文件中显式设置的 Environment= 参数。

如果 ja va -version 显示的是旧版本(比如Ja va 11),大概率是因为PATH环境变量中,旧版本JDK的路径排在了新版本前面。可以使用命令 echo $PATH | tr ':' '\n' | grep jvm 检查路径顺序,确保新JDK的 $JA VA_HOME/bin 位于最前面。

本文转载于:https://www.php.cn/faq/2455722.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注