【全网最细】CentOS 安装 JDK 1.8 实操指南(避坑版)

【全网最细】CentOS 安装 JDK 1.8 实操指南(避坑版)
一、下载 JDK 1.8 安装包

JDK 1.8 是企业级应用的经典稳定版本,优先从官方渠道下载适配 Linux 64 位的压缩包:

🌟 小技巧:Oracle 官网下载需登录,若嫌麻烦,可选择华为云 / 阿里云镜像站(如 https://mirrors.huaweicloud.com/openjdk),下载速度更快且无需登录。
二、清理系统自带 JDK(关键避坑步骤)

CentOS 系统默认可能预装 OpenJDK,与 Oracle JDK 冲突,需彻底清理:

# 1. 检查已安装的 Java 相关包(忽略大小写,避免漏查) rpm -qa | grep -i java # 2. 强制卸载所有 Java 包(无依赖检查,彻底清理) rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
  • 命令解析:
    • rpm -qa:列出系统所有已安装的 RPM 包;
    • grep -i:忽略大小写匹配 java/Java/JAVA
    • xargs -n1:逐个传递包名,避免批量卸载报错;
    • rpm -e --nodeps:强制卸载,忽略包间依赖(清理更彻底)。
三、安装 JDK 1.8(规范目录 + 高效操作)

Linux 软件建议统一安装在 /usr/local 目录,便于管理:

# 1. 将下载的压缩包移动到 /usr/local(替换为实际文件路径) sudo mv ~/jdk-8u421-linux-x64.tar.gz /usr/local/ # 2. 进入安装目录 cd /usr/local # 3. 解压压缩包(xf 组合:x=解压,f=指定文件,无需加 v 减少冗余输出) sudo tar xf jdk-8u421-linux-x64.tar.gz # 4. 删除压缩包(节省磁盘空间,可选) sudo rm -f jdk-8u421-linux-x64.tar.gz # 5. 重命名目录(可选,简化后续配置,避免版本号过长) sudo mv jdk1.8.0_421 jdk1.8
⚠️ 注意:解压后目录名默认是 jdk1.8.0_421(与压缩包版本对应),重命名为 jdk1.8 可避免后续环境变量因版本号变更出错。
四、配置全局环境变量(永久生效)

环境变量写入 /etc/profile 可对所有用户生效,避免仅当前用户可用:

# 1. 编辑 profile 文件(新手推荐用 nano,比 vi 更易操作) sudo vi /etc/profile # 或 sudo nano /etc/profile # 2. 在文件末尾添加以下配置(复制粘贴即可,注意 JAVA_HOME 路径) export JAVA_HOME=/usr/local/jdk1.8 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH
  • 配置解析:
    • JAVA_HOME:JDK 根目录(核心配置,必须与实际安装路径一致);
    • CLASSPATH:补充 dt.jar 和 tools.jar,解决部分项目类加载失败问题;
    • PATH:将 JDK/bin 加入系统路径,使 java/javac 命令全局可用。
# 3. 刷新配置文件(立即生效,无需重启服务器) source /etc/profile # 4. 验证环境变量(可选,确认配置无误) echo $JAVA_HOME # 输出 /usr/local/jdk1.8 则说明配置正确
五、验证安装结果(一步确认)

执行以下命令,若输出如下版本信息,说明安装成功:

java -version

成功输出示例

java version "1.8.0_421" Java(TM) SE Runtime Environment (build 1.8.0_421-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.421-b09, mixed mode)
六、常见问题速解(99% 的人会踩的坑)
问题现象解决方法
执行 java -version 提示 “命令未找到”1. 检查 JAVA_HOME 路径是否与实际解压目录一致;2. 重新执行 source /etc/profile,或退出当前终端重新登录;3. 确认命令以 root/sudo 权限执行。
解压后无 jre 目录部分 JDK 1.8 版本需手动生成 JRE:cd $JAVA_HOME && ./bin/jlink --module-path jmods --add-modules java.desktop --output jre
环境变量配置后仅 root 用户可用避免将配置写入 ~/.bash_profile,必须写入 /etc/profile;执行 chmod 644 /etc/profile 确保普通用户可读取。
解压时报 “权限不足”执行 sudo chmod 755 jdk-8u421-linux-x64.tar.gz 赋予文件执行权限。
七、进阶优化(生产环境推荐)
  • 配置软链接:避免后续升级 JDK 需修改环境变量
sudo ln -s /usr/local/jdk1.8 /usr/local/java # 环境变量中 JAVA_HOME 改为 /usr/local/java 即可
  • 检查依赖库:部分系统缺少 libc 库导致 JDK 启动失败
sudo yum install -y glibc.i686 glibc.x86_64
总结

JDK 1.8 安装核心是 “清理旧版本 + 路径准确 + 全局配置”,按本教程操作可避开 90% 的常见问题。安装完成后,可直接部署 Tomcat、Spring Boot 等 Java 项目,适配绝大多数企业级应用场景。

Read more

2019年信奥赛C++提高组csp-s初赛真题及答案解析(选择题6-10)

2019年信奥赛C++提高组csp-s初赛真题及答案解析(选择题6-10)

2019年信奥赛C++提高组csp-s初赛真题及答案解析(选择题6-10) 第 6 题 由数字 1,1,2,4,8,8 所组成的不同的 4位数的个数是()。 A. 104 B. 102 C. 98 D. 100 答案:B 解析:由数字 1,1,2,4,8,8 组成四位数,需考虑重复数字。分类讨论: * 四个数字各不相同:取 1,2,4,8,排列数 4!=24。 * 两对重复:取两个1和两个8,排列数 4 ! 2

By Ne0inhk
深入解剖STL set/multiset:接口使用与核心特性详解

深入解剖STL set/multiset:接口使用与核心特性详解

❤️@燃于AC之乐 来自重庆 计算机专业的一枚大学生 ✨专注 C/C++ Linux 数据结构 算法竞赛 AI 🏞️志同道合的人会看见同一片风景! 👇点击进入作者专栏: 《算法画解》 ✅ 《linux系统编程》✅ 《C++》 ✅ 🌟《算法画解》算法相关题目点击即可进入实操🌟 感兴趣的可以先收藏起来,请多多支持,还有大家有相关问题都可以给我留言咨询,希望希望共同交流心得,一起进步,你我陪伴,学习路上不孤单! 文章目录 * 前言(关联式容器概述) * 一、set类介绍 * 1.1 set的类模板声明 * 二、set的构造与迭代器 * 2.1 构造接口 * 2.2 迭代器接口 * 三、set的核心操作接口 * 3.1 插入操作 * 3.2 查找操作 * 3.3

By Ne0inhk
C++ string 部分功能详解:迭代器、初始化与常用函数

C++ string 部分功能详解:迭代器、初始化与常用函数

在 C++ 中,string是处理字符串的核心容器,它封装了丰富的接口来简化字符串操作。本文将围绕string的迭代器访问、初始化方式、容量调整(reserve)、反转(reverse) 四大核心功能展开,结合可直接运行的代码和结果验证建议,帮你快速掌握string的实用技巧。 一、迭代器与范围 for:遍历 string 的两种核心方式 string作为 STL 容器的一种,支持迭代器(类似指针的访问工具)和范围 for 两种遍历方式,所有的STL容器都可以用以上两种方式遍历,其中范围 for 的底层本质就是迭代器。下面通过代码详细演示两者的用法。 1.1 迭代器遍历:灵活控制访问过程 迭代器的核心作用是 “指向容器元素”,支持*解引用获取值、++移动到下一个元素,适用于所有 STL 容器(如vector、list等)。注意:原文代码存在语法错误(如#

By Ne0inhk