我的虚拟机上有2个java版本的示例,我想使用shell脚本强制使用java“java-1.8.0-openjdk”。
# sudo alternatives --config java
There are 2 programs which provide 'java'.
Selection Command
-----------------------------------------------
* 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/jre/bin/java)
+ 2 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.13.0.8-4.el8_5.x86_64/bin/java)
我试了试下面:
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/
export JAVA_HOME
export PATH=$PATH:$JAVA_HOME
java -version
o/p:openjdk版本“11.0.13”,2021年10月19日LTS
如果能帮上忙,我将不胜感激。
2条答案
按热度按时间i7uaboj41#
建议使用以下内容重试:
第三行中的差异。在路径中添加了
/bin
。如果不起作用,请尝试(感谢@Jeff Schallerr的评论):
在您的问题中,您指定了一个非常具体的Java版本。Java版本会在Linux更新时自动更新。
修复您的Java版本是不好的做法。
在文件夹
/usr/lib/jvm
中有一个到当前JVM的软链接。可能是/usr/lib/jvm/jre-1.8.0
建议检查系统中安装的Java版本:
为了将
JAVA_HOME
设置为当前的Java版本。现在将顺序更改为
PATH
并再次测试:PATH
中存在差异,希望您能够欣赏PATH
机制。55ooxyrt2#
首先检查您的bashrc java路径是否在某处被另一个shell脚本的java路径覆盖。打印$PATH并验证java 11路径是否不包含在其中。如果java 11路径也包含在java 8之前的$PATH中,则它在某处的shell脚本中被覆盖。
检查
$JAVA_HOME
变量是否在.bash_profile,/home/.profile,etc/.profile shell脚本中。(否则grep
'java-11-openjdk-11.0.13.0.8-4.el8_5.x86_64/bin/java'并找到java 11配置的$JAVA_HOME所在的shell脚本,并将其删除)然后重新启动计算机并再次尝试
sudo alternatives --config java