Skip to content

apt安装(jdk17为例)

JDK 17 为什么选 APT?(追求“稳”与“快”)

JDK 17 是目前的 LTS(长期支持)主流版本,也是 Ubuntu 官方仓库里的“一等公民”。

  • 理由一:官方原生支持 Ubuntu 22.04/24.04 的官方软件源里直接维护了 openjdk-17-jdk

    • 好处:你敲一行命令就装好了,而且它会自动帮你配置好基础环境(比如 SSL 证书 ca-certificates-java,这是很多手动安装容易漏掉的坑,导致 Java 程序访问 HTTPS 报错)。
  • 理由二:系统级依赖 现在很多其他的 Linux 软件(比如 Jenkins、Elasticsearch)默认依赖 JDK 17。

    • 好处:用 apt 安装,相当于把 JDK 17 注册进了系统的“户口本”。当你安装其他软件时,它们能自动找到这个 Java,不会报错说“缺少依赖”。
  • 理由三:自动安全更新

    • 好处:如果 JDK 17 曝出了安全漏洞,你只需要 sudo apt upgrade,系统就会自动把它打上补丁。作为“基座”环境,安全最重要。
  • 过程:

  1. 更新软件包列表
sudo apt update
  1. 安装jdk
   sudo apt install openjdk-17-jdk

手动下载安装(jdk8为例)

JDK 8(1.8)是老古董了(虽然国内企业还在大量用),它在现代 Linux 系统里是“二等公民”甚至“黑户”。

  • 理由一:源里根本没有(或者太旧) 在 Ubuntu 24.04 这种新系统里,官方源可能已经移除了 JDK 8,或者只保留了非常旧的版本。

    • 痛点:如果你强行用 apt 装,可能需要添加一些乱七八糟的第三方 PPA 源(比如 ppa:openjdk-r/ppa),这会把系统环境搞脏,甚至导致依赖冲突。
  • 理由二:需要“锁定版本” 做毕设或老项目维护时,可能指定要 8u202 这个版本(最后一个免费商用版)。

    • 痛点apt 只能安装最新版,它控制不了小版本号。万一自动更新把你的环境升挂了怎么办?
  • 理由三:隔离性

    • 优势:解压安装相当于“绿色版”软件。它静静地躺在 /usr/local/java 里,不干扰系统的 /usr/lib,也不依赖系统的包管理器。你想删?直接 rm -rf 文件夹就行,干干净净,不留垃圾。
  • 过程:

  1. 下载JDK安装包使用 tar.gz 解压安装,方便特定版本控制
  2. 解压版本安装包
  • 安装位置:/usr/local/java/jdk1.8.0_202
sudo tar -xzvf jdk-17_linux-x64_bin.tar.gz
  1. 注册(告诉系统有两个JAVA) 使用 update-alternatives 将手动解压的 JDK 1.8 加入系统管理列表。
BASH
#注册 java 命令 
sudo update-alternatives --install /usr/bin/java java /usr/local/java/jdk1.8.0_202/bin/java 1 
# (可选) 注册 javac 命令 
sudo update-alternatives --install /usr/bin/javac javac /usr/local/java/jdk1.8.0_202/bin/javac 1
  1. 环境变量配置 文件位置:~/.bashrc (用户级配置,只对你生效,最安全) 操作vim ~/.bashrc,将以下内容追加到文件末尾。
bash
# =================================================
# JAVA 环境动态配置 (自动跟随系统版本)
# =================================================

# 1. 动态计算 JAVA_HOME
# 原理:追踪 /usr/bin/java 软链接 -> 找到真实文件 -> 回退两级目录得到根目录
export JAVA_HOME=$(dirname $(dirname $(readlink -f /usr/bin/java)))

# 2. 设置 PATH 优先级
# 原理:把当前 JAVA_HOME/bin 放在最前面,确保系统优先使用我们选中的版本
export PATH=$JAVA_HOME/bin:$PATH

# 3. 设置 CLASSPATH
# 原理:兼容 JDK 1.8 的类库加载方式
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# =================================================
# 便捷切换函数 (懒人神器)
# =================================================
switch_java() {
    sudo update-alternatives --config java
    source ~/.bashrc  # 立刻刷新配置,无需重启
    echo "--------------------------------------"
    echo "当前 Java 版本已切换为:"
    java -version
}
  1. 生效配置
bash
source ~/.bashrc

直接输入命令 switch_java,输入数字选择版本即可

避坑

  1. 不要/etc/profile 里写死 JAVA_HOME=/usr/lib/...
  • 原因:这会锁死版本,导致切换命令后,环境变量依然指向旧版本,Tomcat/Maven 会报错。
  1. 不要直接手动修改 /usr/bin/java 的软链接。
  • 原因:破坏系统规范,容易导致 apt 升级时系统崩溃。始终使用 update-alternatives 管理。