Linux下java和javac版本不同(设置用户默认的java版本)解决方法

文章详细介绍了如何在Ubuntu系统中,为不同用户提供各自所需的JDK版本,通过设置用户配置文件和使用sudo update-alternatives命令来实现。包括删除或重命名/usr/bin下的JDK相关符号链接,确保执行java命令时优先调用用户指定的JDK版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的Ubuntu下安装了OpenJDK和Oracle的JDK,然后我在用户自己的配置文件(~./profile)中设置JAVA_HOME(24到28行),



然后,我在命令行中执行java -version和javac -version发现其版本号不一样。我用which命令判断其java和javc的命令,发现javac其实是/usr/bin/javac下的,再用file查看其属性,发现是/etc/alternatives/javac的一个符号链接。于是,我想起了网上很多使用sudo update-alternatives命令设置默认JDK的方法,其实,该方法的实质就是将你自己安装的JDK中java,javac等命令复制到/etc/alternatives下,这样你执行这些java命令的时候,系统会先在/usr/bin下面去找,/usr/bin下面的java是一个到/etc/alternatives/java的链接,而/etc/alternatives/java是你安装的JDK中的java,所以这样实质上执行的就是你安装的JDK。

弄清楚了原理,解决方案也很简单。直接把/usr/bin下的这些JDK相关的符号链接全部删除(我这里没有删除,而是将其重命名为*.bak)。这样你在命令行输入java的时候,系统在/usr/bin下面找不到,就通过你的用户配置文件,找到你JAVA_HOME里面配置的JDK路径,执行里面的java。


重命名这些符号链接以后,重启电脑(是不是一样了)。



我这里是因为不同的用户需要使用不同的JDK,如果希望所有用户都使用相同的版本的,可以使用sudo update-alternatives这样的命令去设置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值