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

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

相关推荐
鶴哥只手遮天3 小时前
Spring AI 2.0.1 深度解析-第 14 章 MCP 服务端(上):注解式实现与工具来源
java·人工智能·开源
鶴哥只手遮天3 小时前
Spring AI 2.0.1 深度解析-第 15 章 MCP 服务端(下):三种协议形态、Streamable 传输与状态管理
java·人工智能·开源
鶴哥只手遮天3 小时前
Spring AI 2.0.1 深度解析-第 16 章 向量存储(上):`VectorStore` 接口体系、`BatchingStrategy`
java·人工智能·开源
鶴哥只手遮天3 小时前
Spring AI 2.0.1 深度解析-第 12 章 工具循环的流式形态、Usage 累加与扩展体系
java·人工智能·开源
鶴哥只手遮天3 小时前
Spring AI 2.0.1 深度解析-第 23 章 模型供应商实现:从 `OpenAiSetup` 到 Bedrock
java·人工智能·开源
鶴哥只手遮天3 小时前
Spring AI 2.0.1 深度解析-第 06 章 内置 Advisor 全景:13 个实现逐个剖到源码级
java·人工智能·开源
鶴哥只手遮天3 小时前
Spring AI 2.0.1 深度解析-第 03 章 消息体系与 Prompt:不可变模型、`ChatOptions` 与模板渲染
java·人工智能·开源
鶴哥只手遮天3 小时前
Spring AI 2.0.1 深度解析-第 24 章 生产实践与 2.x 迁移:陷阱清单、AOT 与调优
java·人工智能·开源
鶴哥只手遮天4 小时前
Spring AI 2.0.1 深度解析-第 10 章 工具调用(中):执行链路、结果转换与工具限制
java·人工智能·开源
鶴哥只手遮天4 小时前
Spring AI 2.0.1 深度解析-第 13 章 MCP 客户端:传输、工具聚合与命名冲突
java·人工智能·开源