centos 强制使用特定版本的JAVA(以百分比计)

kgqe7b3p  于 2022-11-07  发布在  Java
关注(0)|答案(2)|浏览(122)

我的虚拟机上有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
如果能帮上忙,我将不胜感激。

i7uaboj4

i7uaboj41#

建议使用以下内容重试:

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/bin
java -version

第三行中的差异。在路径中添加了/bin
如果不起作用,请尝试(感谢@Jeff Schallerr的评论):

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/jre/bin
java -version

在您的问题中,您指定了一个非常具体的Java版本。Java版本会在Linux更新时自动更新。

修复您的Java版本是不好的做法。

在文件夹/usr/lib/jvm中有一个到当前JVM的软链接。可能是/usr/lib/jvm/jre-1.8.0
建议检查系统中安装的Java版本:

ls -l /usr/lib/jvm

为了将JAVA_HOME设置为当前的Java版本。

JAVA_HOME=/usr/lib/jvm/jre-1.8.0
export JAVA_HOME
export PATH=$JAVA_HOME/bin:$PATH
which java
java -version
$JAVA_HOME/bin/java -version

现在将顺序更改为PATH并再次测试:

JAVA_HOME=/usr/lib/jvm/jre-1.8.0
export JAVA_HOME
export PATH=$PATH:$JAVA_HOME/bin
which java
java -version
$JAVA_HOME/bin/java -version

PATH中存在差异,希望您能够欣赏PATH机制。

55ooxyrt

55ooxyrt2#

首先检查您的bashrc java路径是否在某处被另一个shell脚本的java路径覆盖。打印$PATH并验证java 11路径是否不包含在其中。如果java 11路径也包含在java 8之前的$PATH中,则它在某处的shell脚本中被覆盖。

echo $PATH

检查$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

相关问题