Ubuntu 20.04 云服务器安装JDK 17完整教程

📋 文章摘要

本文详细介绍在腾讯云轻量应用服务器(Ubuntu 20.04 LTS)上手动安装Oracle JDK 17的完整过程。包括安装包上传、解压、环境变量配置、验证安装等关键步骤,以及常见问题的解决方案。

关键词:JDK 17、Ubuntu、云服务器、Java环境配置、环境变量


🖥️ 环境说明

  • 服务器:腾讯云轻量应用服务器
  • 操作系统:Ubuntu 20.04 LTS
  • JDK版本:Oracle JDK 17.0.16
  • 安装方式:手动安装(tar.gz包)

📚 目录

  1. 准备工作
  2. 上传JDK安装包
  3. 解压JDK安装包
  4. 配置环境变量
  5. 验证安装
  6. 常见问题排查
  7. 总结

1. 准备工作

1.1 下载JDK 17安装包

从Oracle官网下载JDK 17安装包:

  • 下载地址:https://www.oracle.com/java/technologies/downloads/#java17
  • 选择:Linux x64 Compressed Archive(.tar.gz格式)
  • 文件名示例:jdk-17.0.16_linux-x64_bin.tar.gz

1.2 创建安装目录

# 创建JDK安装目录sudomkdir -p /opt/java # 修改目录权限(允许当前用户写入)sudochown -R ubuntu:ubuntu /opt/java sudochmod -R 755 /opt/java 

说明

  • /opt/java:JDK的标准安装位置
  • 修改权限后,可以通过文件管理器上传文件

2. 上传JDK安装包

方式一:使用文件管理器上传(推荐)

  1. 登录云服务器控制台
  2. 进入文件管理器
  3. 导航到 /opt/java 目录
  4. 上传JDK安装包(.tar.gz文件)

注意:如果提示"无写权限",执行以下命令修复:

sudochown -R ubuntu:ubuntu /opt/java sudochmod -R 755 /opt/java 

方式二:使用SCP命令上传

在本地电脑执行:

scp /path/to/jdk-17.0.16_linux-x64_bin.tar.gz ubuntu@服务器IP:/opt/java/ 

方式三:使用wget直接下载

cd /opt/java wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz 

3. 解压JDK安装包

3.1 进入安装目录

cd /opt/java ls -la 

预期输出:应该看到JDK安装包文件

3.2 解压安装包

# 解压JDK安装包tar -xzf jdk-17.0.16_linux-x64_bin.tar.gz # 查看解压后的目录ls -la 

预期结果:会看到类似 jdk-17.0.16 的目录

重要:记录解压后的实际目录名,后续配置环境变量需要使用。

3.3 验证解压结果

# 查看JDK目录结构ls -la jdk-17.0.16/ # 应该看到以下目录:# bin/ conf/ include/ jmods/ legal/ lib/ release

4. 配置环境变量

4.1 编辑系统配置文件

# 编辑系统级配置文件(所有用户生效)sudovi /etc/profile 

4.2 添加JDK环境变量

在文件末尾添加以下内容:

# JDK 17 环境变量配置exportJAVA_HOME=/opt/java/jdk-17.0.16 exportJRE_HOME=$JAVA_HOME/jre exportCLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib exportPATH=$JAVA_HOME/bin:$PATH

重要说明

  • /opt/java/jdk-17.0.16 替换为你实际的JDK目录名
  • 如果解压后是其他名称,相应修改路径

4.3 保存并退出

  • Esc 退出编辑模式
  • 输入 :wq 保存并退出
  • 按回车确认

4.4 使环境变量生效

# 重新加载配置文件source /etc/profile # 或者重新登录SSH会话exit# 然后重新登录

5. 验证安装

5.1 检查Java版本

java -version 

预期输出

java version "17.0.16" 2025-07-15 LTS Java(TM) SE Runtime Environment (build 17.0.16+12-LTS-247) Java HotSpot(TM) 64-Bit Server VM (build 17.0.16+12-LTS-247, mixed mode, sharing) 

5.2 检查Java编译器版本

javac -version 

预期输出

javac 17.0.16 

5.3 检查JAVA_HOME环境变量

echo$JAVA_HOME

预期输出

/opt/java/jdk-17.0.16 

5.4 检查Java路径

which java 

预期输出

/opt/java/jdk-17.0.16/bin/java 

5.5 编译测试(可选)

# 创建测试文件cat> Test.java <<'EOF' public class Test { public static void main(String[] args) { System.out.println("JDK 17安装成功!"); } } EOF# 编译 javac Test.java # 运行 java Test 

预期输出

JDK 17安装成功! 

6. 常见问题排查

问题1:java: command not found

错误信息

bash: java: command not found 

可能原因

  1. 环境变量未正确配置
  2. 配置文件未重新加载

解决方案

# 1. 检查JAVA_HOME是否设置echo$JAVA_HOME# 2. 如果为空,检查配置文件sudocat /etc/profile |grep JAVA_HOME # 3. 重新加载配置source /etc/profile # 4. 或者重新登录SSH

问题2:JAVA_HOME路径错误

错误信息

Error: JAVA_HOME is not set correctly 

解决方案

# 1. 查看实际的JDK目录ls -la /opt/java/ # 2. 确认JDK目录名# 3. 修改 /etc/profile 中的JAVA_HOME路径sudovi /etc/profile # 4. 修改后重新加载source /etc/profile 

问题3:权限不足

错误信息

Permission denied 

解决方案

# 修改目录权限sudochown -R ubuntu:ubuntu /opt/java sudochmod -R 755 /opt/java 

问题4:版本显示不正确

可能原因:系统有多个Java版本

解决方案

# 1. 检查所有Java版本 update-alternatives --list java # 2. 如果安装了多个版本,设置默认版本sudo update-alternatives --config java # 3. 或者直接使用完整路径 /opt/java/jdk-17.0.16/bin/java -version 

7. 环境变量配置说明

JAVA_HOME

JDK的安装根目录,其他程序通过这个变量查找Java。

JRE_HOME

Java运行环境的目录(JDK包含JRE)。

CLASSPATH

Java类路径,告诉JVM在哪里查找类文件。

PATH

将Java的bin目录添加到系统路径,使javajavac命令可以在任何地方使用。


8. 完整安装命令序列

如果安装包已上传,可以一次性执行:

# 1. 进入安装目录cd /opt/java # 2. 查看文件ls -la # 3. 解压(根据实际文件名调整)tar -xzf jdk-17.0.16_linux-x64_bin.tar.gz # 4. 查看解压后的目录名ls -la # 5. 编辑配置文件sudovi /etc/profile # 6. 在文件末尾添加(根据实际目录名调整):# export JAVA_HOME=/opt/java/jdk-17.0.16# export JRE_HOME=$JAVA_HOME/jre# export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib# export PATH=$JAVA_HOME/bin:$PATH# 7. 使配置生效source /etc/profile # 8. 验证安装 java -version javac -version echo$JAVA_HOME

9. 替代方案:使用apt安装OpenJDK 17

如果不想手动安装,可以使用apt直接安装:

# 更新软件包列表sudoapt update # 安装OpenJDK 17sudoaptinstall -y openjdk-17-jdk # 验证安装 java -version javac -version 

优点

  • 安装简单,一条命令搞定
  • 自动配置环境变量
  • 自动更新

缺点

  • 版本可能不是最新的
  • 无法自定义安装位置

10. 总结

本文详细介绍了在Ubuntu 20.04云服务器上安装JDK 17的完整流程:

  1. ✅ 创建安装目录并设置权限
  2. ✅ 上传JDK安装包
  3. ✅ 解压安装包
  4. ✅ 配置环境变量(JAVA_HOME、PATH等)
  5. ✅ 验证安装

关键配置点

  • JAVA_HOME=/opt/java/jdk-17.0.16:JDK安装路径
  • PATH=$JAVA_HOME/bin:$PATH:将Java命令添加到系统路径
  • source /etc/profile:使配置生效

验证成功标志

  • java -version 显示版本为17
  • javac -version 显示版本为17
  • echo $JAVA_HOME 显示正确的路径

📝 参考命令速查

# 查看Java版本 java -version # 查看Java编译器版本 javac -version # 查看JAVA_HOMEecho$JAVA_HOME# 查看Java路径which java # 重新加载环境变量source /etc/profile 

🔗 相关文章推荐


💬 问题反馈

如果在安装过程中遇到问题,欢迎在评论区留言,我会及时回复!


如果这篇文章对你有帮助,请点赞👍、收藏⭐、转发📤,让更多人受益!

Read more

Flutter for OpenHarmony:fpdart 函数式编程的终极奥义(Option/Either/Task 让代码更安全) 深度解析与鸿蒙适配指南

Flutter for OpenHarmony:fpdart 函数式编程的终极奥义(Option/Either/Task 让代码更安全) 深度解析与鸿蒙适配指南

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 Dart 是一门面向对象(OOP)语言,但它也混入了很多函数式编程(FP)的特性(如一等函数、map/reduce)。 然而,在处理错误处理、空安全、副作用管理时,传统的 OOP 做法(try-catch, if-null)往往会导致代码嵌套过深,逻辑分散。 fpdart 是目前 Dart 生态中最完善的函数式编程库。它引入了 Haskell/Scala/Rust 等语言中经过实战检验的概念: * Option: 优雅处理可能为空的值(告别 null)。 * Either: 优雅处理错误(告别 try-catch)。 * Task: 优雅处理异步(即 Lazy Future)。 对于

By Ne0inhk
Flutter 三方库 wallet_connect 的鸿蒙化适配指南 - 实现 Web3 钱包协议连接、支持 DApp 授权登录与跨链交易签名实战

Flutter 三方库 wallet_connect 的鸿蒙化适配指南 - 实现 Web3 钱包协议连接、支持 DApp 授权登录与跨链交易签名实战

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 wallet_connect 的鸿蒙化适配指南 - 实现 Web3 钱包协议连接、支持 DApp 授权登录与跨链交易签名实战 前言 在进行 Flutter for OpenHarmony 的去中心化应用(DApp)或加密货币钱包开发时,支持标准的 WalletConnect 协议是链接用户钱包的关键。wallet_connect 是该协议的 Dart 实现,它能让你的鸿蒙 App 安全地与 MetaMask、Trust Wallet 等钱包建立双向加密连接。本文将探讨如何在鸿蒙系统下构建安全、稳定的 Web3 授权流程。 一、原理解析 / 概念介绍 1.1 基础原理

By Ne0inhk
【Nginx】——从0到1,带你玩转Nginx,掌握其中的技巧以及配置

【Nginx】——从0到1,带你玩转Nginx,掌握其中的技巧以及配置

🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大三学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL,Java基础,Rust】 🎈热门专栏:🎊【Python,Javaweb,Springboot】  感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持!❤️ 目录 🎈概念 🎈下载 🎈上传安装 ✨开始安装 ✨ 目录结构 🎈 常用命令  ✨ 开启nginx  ✨ 看一下文件日志  ✨ 重新加载配置文件 ✨ 配置文件  🎈 配置文件结构 🎈具体应用 ✨ 部署静态资源 ✨ 反向代理 ✨ 负载均衡 🎈概念         Nginx(engine x)由俄罗斯的程序设计师Igor Sysoev所开发,官方测试显示Nginx能够支撑高达5万并发连接数。Nginx不仅可以作为HTTP服务器使用,处理静态页面或支持FastCGI、SCGI、uWSGI等协议的动态语言,还能充当反向代理服务器,实现负载均衡,以及提供IMAP/

By Ne0inhk
【Claude Code】无需sudo!无魔法!Linux 普通用户也能装 Claude Code 全流程

【Claude Code】无需sudo!无魔法!Linux 普通用户也能装 Claude Code 全流程

🐧 无需 sudo!无魔法!Linux 普通用户也能装 Claude Code 全流程 🚀 环境:Ubuntu / CentOS / Arch 等任意发行版 权限:❌ 不需要 root,❌ 不需要 sudo,✅ 只要你能登录就行! 文章目录 * 🐧 无需 sudo!无魔法!Linux 普通用户也能装 Claude Code 全流程 🚀 * 🌈 最终效果 * 📦 1. 准备用户级目录 * 🔍 2. 一键获取“最新 20.x LTS”真实下载地址 * ⬇️ 3. 下载 + 解压(一条命令搞定) * 📁 4. 把 Node 塞进自己的 PATH * 🪣 5. 给 npm

By Ne0inhk