news 2026/5/13 4:56:57

jdk配置完之后java -version还是默认的jdk版本如何更改

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
jdk配置完之后java -version还是默认的jdk版本如何更改

虚拟机在、etc/profile中配配置完新的jdk1.8然后将配置文件立即生效,之后java -version还是cenots 7 的默认jdk为什么?

jdk安装已经成功,JAVA_HOME、PATH的环境变量也已经在/etc/profile文件下面配置成功,并且配置文件已经生效。
出现问题:

1、java -version输出的结果是默认的jdk并不是刚刚新安装的jdk:

[root@slave1 ~]# vim /etc/profile[root@slave1 ~]# source /etc/profile[root@slave1 ~]# java -versionopenjdk version"1.8.0_262"OpenJDK Runtime Environment(build1.8.0_262-b10)OpenJDK64-Bit Server VM(build25.262-b10, mixed mode)[root@slave1 ~]# which java/bin/java

2. 分析问题:

在 CentOS 7 中修改/etc/profile配置 JDK 后,执行source /etc/profile仍显示默认 JDK,核心原因是系统默认的/usr/bin/java软链接(由alternatives管理)优先级高于PATH环境变量,或存在配置 / 缓存层面的隐藏问题。以下是按优先级排序的排查 + 解决步骤,直击根本原因:
一、先明确核心逻辑(为什么 PATH 生效了还没用?)
CentOS 7 中,/usr/bin/java是系统默认的java命令软链接(由alternatives工具维护),即使你的PATH中把新 JDK 的bin目录放在最前面:
如果终端执行java时,系统先匹配到/usr/bin/java(软链接指向 OpenJDK),就会忽略PATH中的新 JDK 路径;
只有当/usr/bin/java指向新 JDK,或直接删除该软链接,PATH的优先级才会体现。

步骤 1:检查java命令的实际指向(必做)
执行以下命令,定位系统真正调用的java路径:

whichjava# 看输出是新JDK还是/usr/bin/javals-l /usr/bin/java# 看软链接指向(OpenJDK还是新JDK)
  • 如果which java输出/usr/bin/java,且ls -l显示指向 OpenJDK → 核心问题是软链接未改; 如果which
  • java输出新 JDK 路径(如/usr/local/jdk1.8/bin/java),但java -version仍显示 OpenJDK
    → 大概率是命令缓存 / 文件权限问题。
[root@slave1 ~]# which java/bin/java[root@slave1 ~]# ls -l /usr/bin/javalrwxrwxrwx.1root root2212923:16 /usr/bin/java ->/etc/alternatives/java

由上述代码可以看出输出的是/etc/alternatives/java,目前排查应该是软链接的问题。按照软链接指向 OpenJDK的方向去解决问题。

2.解决问题:

第一步:注册新 JDK 到 alternatives 系统(关键)
替换命令中 /usr/local/jdk1.8 为你实际的新 JDK 安装路径(比如你解压的 jdk1.8 所在目录):

[root@slave1 ~]# ls -l /usr/bin/javalrwxrwxrwx.1root root2212923:16 /usr/bin/java ->/etc/alternatives/java

下面是针对性的修复步骤,一步到位解决问题:

  • 步骤 1:查看 /etc/alternatives/java 的实际指向(确认 OpenJDK 路径)
    先明确这个核心软链接到底指向哪里:
ls-l /etc/alternatives/java

输出会类似:
lrwxrwxrwx. 1 root root 71 12月 9 23:16 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.xxx/jre/bin/java(OpenJDK 路径)

  • 步骤 2:用 alternatives 切换到新 JDK(核心操作)
    第一步:注册新 JDK 到 alternatives(如果未注册)
    替换命令中的 /usr/local/jdk1.8 为你实际的新 JDK 安装路径:
# 注册java命令(优先级100,高于OpenJDK的默认优先级)alternatives --install /usr/bin/java java /usr/local/jdk1.8/bin/java100# 可选:注册javac(编译命令,避免后续javac -version仍显示OpenJDK)alternatives --install /usr/bin/javac javac /usr/local/jdk1.8/bin/javac100

第二步:选择新 JDK 作为默认版本
执行以下命令,会列出所有已注册的 Java 版本:

alternatives --config java

示例输出:

共有2个程序提供“java”。 序号 命令 ----------------------------------------------- *+1/usr/lib/jvm/java-1.8.0-openjdk/jre/bin/java2/usr/local/jdk1.8/bin/java 输入要选择的序号:

输入新 JDK 对应的序号(比如上例的 2),回车即可

步骤 3:清空命令缓存,立即验证
系统会缓存 java 命令的路径,即使改了软链接,缓存仍会指向旧路径,需清空:

hash-r# 清空命令缓存java -version# 验证版本(此时应显示新JDK1.8,而非OpenJDK)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/10 6:34:13

NO15数据结构选择题考点|线性表|栈和队列|串

数据结构的基本概念 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。数据结构的三要素{逻辑结构存储结构数据的运算 \begin{aligned} &\text{数据结构是相互之间存在一种或多种特定关系的数据元素的集合。} \\ \\ &\text{数据结构的三要素} \begin{cases}…

作者头像 李华
网站建设 2026/5/11 21:27:19

Java毕设选题推荐:基于SpringBoot的农业合作社果蔬批发信息管理系统设计基于springboot果蔬种植销售一体化服务平台的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/5/9 1:03:40

定制开发实战:海外版外卖系统PHP全栈解决方案

在数字化转型的浪潮下,全球外卖市场规模预计将在2025年突破2000亿美元。与国内市场不同,海外外卖平台面临多语言支持、跨境支付、税务合规、文化差异等复杂挑战。作为拥有二十年开发经验的PHP全栈架构师,我将深入解析如何基于PHP技术栈构建高…

作者头像 李华
网站建设 2026/5/9 1:03:55

Linux I/O模型总结

Linux I/O模型 一、I/O 操作的两个核心阶段 在深入具体模型之前,我们必须明确一个前提:任何一次 Linux 下的 I/O 操作(以网络 socket 读取为例),都分为两个不可分割的阶段: 数据就绪阶段:内核等…

作者头像 李华
网站建设 2026/5/11 4:19:31

PSD-95抗体:如何为缺血性脑卒中治疗开启神经保护新纪元?

一、缺血性脑卒中治疗面临哪些临床挑战?缺血性脑卒中作为全球致残率最高的神经系统疾病,其治疗时间窗窄、神经损伤不可逆的特点一直是临床面临的重大挑战。目前标准治疗方案阿替普酶虽能通过溶栓恢复血流,但存在出血风险高、治疗时间窗短&…

作者头像 李华
网站建设 2026/5/9 1:04:55

OpenAI开源“Circuit‑Sparsity”模型,0.4 B 参数实现 99.9% 权重归零!

12 月 15 日,OpenAI 在官方博客上公布了最新的开源项目——Circuit‑Sparsity 模型。该模型仅拥有 0.4 B 参数,但高达 99.9% 的权重被强制置零,形成极度稀疏的 Transformer 结构。OpenAI 表示,此举旨在破解大语言模型&#xff08…

作者头像 李华