linux - centos强制使用特定版本的JAVA

标签 linux bash shell centos

我的虚拟机上有 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
在这里的帮助将不胜感激。

最佳答案

建议再试一次:

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 版本。当有 Linux 更新时,java 版本会自动更新。
修复 Java 版本是不好的做法。
在文件夹 /usr/lib/jvm有一个指向当前 JVM 的软链接(soft link)。
大概/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机制。

关于linux - centos强制使用特定版本的JAVA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71436905/

相关文章:

linux - 使用 bash -c 比使用此处字符串有什么优势

python - Tkinter 在 docker 中安装

linux -/proc/self 和/proc/$$ 之间有什么区别?

bash - 在 bash shell 中打印星号 ("*")

android - adb jdwp 完成后不退出

linux - 查看程序的退出代码(程序退出后)

c - 如何以编程方式检测 linux 上是否存在系统调用?

使用 Statsd 和 Graphite 进行 Linux 进程监控

c++ - 是否可以缓存从 MapViewOfFile 返回的映射区域?

c++ - -Wunused-variable 编译器说错误