Ubuntu 安装 JDK (含手动安装)

方法一:使用 apt 安装 OpenJDK(最简单,推荐)

Ubuntu 官方仓库提供了 OpenJDK 的多个版本(如 JDK 11, 17, 21 等)。

1. 更新软件包列表

打开终端,运行:

bash 复制代码
sudo apt update

2. 查看可用的 JDK 版本

bash 复制代码
apt search openjdk-.*-jdk | grep "^openjdk"

3. 安装指定的 JDK

以安装 JDK 17 为例:

bash 复制代码
sudo apt install openjdk-17-jdk

4. 验证安装

bash 复制代码
java -version
javac -version

如果输出了对应的版本号,说明安装成功。

方法二:手动下载安装(适用于 Oracle JDK 或特定版本)

1. 下载 JDK 压缩包 前往 Oracle JDK 官网 或 Eclipse Temurin (Adoptium) 下载 Linux x64 的 .tar.gz 压缩包。

(假设下载的文件名为 jdk-17.0.20.1_linux-x64_bin.tar.gz)

2. 创建安装目录并解压

bash 复制代码
# 创建目录
sudo mkdir -p /usr/local/java

# 将下载的文件移动到该目录(请根据实际下载路径修改)
sudo mv jdk-17.0.20.1_linux-x64_bin.tar.gz /usr/local/java/

# 进入目录并解压
cd /usr/local/java
sudo tar -zxvf jdk-17.0.20.1_linux-x64_bin.tar.gz

# 删除压缩包(可选)
sudo rm jdk-17.0.20.1_linux-x64_bin.tar.gz

3. 配置环境变量

打开全局环境变量配置文件:

bash 复制代码
sudo nano /etc/profile

在文件最末尾 添加以下内容(注意:请将 jdk-17 替换为你解压后的实际文件夹名称):

bash 复制代码
# Java Environment
export JAVA_HOME=/usr/local/java/jdk-17.0.20.1
export PATH=$JAVA_HOME/bin:$PATH

(注:JDK 9 及以上版本已不再需要配置 JRE_HOME 和 CLASSPATH)

保存并退出(在 nano 中按 Ctrl+O 回车 保存,Ctrl+X 退出)。

4. 使环境变量生效

bash 复制代码
source /etc/profile

5. 验证安装

bash 复制代码
java -version
echo $JAVA_HOME

方法三:使用 SDKMAN(适合开发者管理多个 Java 版本)

如果你是 Java 开发者,经常需要在不同项目间切换不同的 JDK 版本(如 JDK 8, 11, 17, 21),强烈推荐使用 SDKMAN。

1. 安装依赖

bash 复制代码
sudo apt install curl zip

2. 安装 SDKMAN

bash 复制代码
curl -s "https://get.sdkman.io" | bash

3. 初始化 SDKMAN

bash 复制代码
source "$HOME/.sdkman/bin/sdkman-init.sh"

4. 查看并安装 Java 版本

bash 复制代码
# 查看所有可用的 Java 版本
sdk list java

# 安装指定的版本(例如安装 Temurin 的 JDK 17)
sdk install java 17.0.8-tem

5. 切换版本

bash 复制代码
# 切换当前终端的 Java 版本
sdk use java 17.0.8-tem

# 设置默认的 Java 版本
sdk default java 17.0.8-tem

补充:如何切换系统默认的 Java 版本?

如果你通过 apt 安装了多个版本的 OpenJDK(比如同时安装了 11 和 17),可以使用以下命令切换系统默认版本:

bash 复制代码
# 切换 java 命令
sudo update-alternatives --config java

# 切换 javac 命令
sudo update-alternatives --config javac

运行后,终端会列出所有已安装的版本,输入对应的序号并回车即可切换。

相关推荐
CoderYanger2 小时前
Java EE 进阶:8.MyBatis 操作数据库(入门)(第二弹)
java·数据库·spring boot·spring·面试·java-ee·mybatis
CQU_JIAKE5 小时前
11.7[高体】
java·后端·spring
apcipot_rain6 小时前
C++转Java日记(04)
java·开发语言·c++
特立独行的猫A6 小时前
我给女儿写了个打字练习:一边敲键盘,一边把小学英语单词记牢
java·后端·python
憧憬成为java架构高手的小白8 小时前
LangGraph4j 实战(下)
java
天诰8 小时前
SA-K-11 检索会消失吗与四个未解问题
java·服务器·人工智能·python·机器学习·ai编程
这个昵称不容易12 小时前
SpringBoot「衣依」服装销售平台:144个Java文件180个接口,从挑衣服到收货评价整条链路都在
java·springboot·毕设
计算机毕设定制辅导-无忧学长12 小时前
《基于微信小程序的居家医疗陪护预约系统设计与实现》
java·spring boot·微信小程序·uniapp·居家医疗陪护预约系统
文丑颜不良啊14 小时前
LeetCode2221~2240题目解析
java·leetcode
秋饼14 小时前
Computer Use Agent Java 落地实战:感知-行动循环、执行器与安全围栏生产级实现
java·ai·技术分享·后端开发