如何在linux上设置多个Java版本

如何在linux上设置多个Java版本

我的 Linux 机器上安装了 Java 1.6,所有用户和程序都使用它。现在,我需要安装一个使用 1.7 版本的程序。我想安装这个版本,以便其他人继续使用 1.6,除了那个新程序。我的想法是安装新的Java并保持$JAVA_HOME指向旧的Java 1.6。对于由单独用户执行的特定进程,我想将 $JAVA_HOME 设置为指向 java 1.7

这行得通吗?不会覆盖原来的$JAVA_HOME吧? $JAVA_HOME 指向新的 java 是否足以让一切正常工作?

注意:我不希望程序在Java 1.7下执行,程序调用必须在1.7下运行的脚本。我既没有权限修改程序,也没有修改那些脚本。

答案1

你需要担心的不仅仅是$JAVA_HOME;如果要调用命令,还需要设置 $PATH没有绝对路径。即java和不/opt/java/1.7/bin/java

现在,根据您的脚本的工作方式或您调用 java 的方式,您有几个选择。

bash脚本

这样做意味着您不需要添加额外的用户

#!/bin/bash

JAVA_HOME=/opt/java/1.7
PATH=/opt/java/1.7/bin:$PATH
...

~/.bashrc

如果您想使用其他用户,可以将其放入 .bashrc 中。使用export将$JAVA_HOME和$PATH设为环境变量。

...
export JAVA_HOME=/opt/java/1.7
export PATH=/opt/java/1.7/bin:$PATH
...

评估

您还可以为单个命令及其子命令动态设置这些环境变量

eval JAVA_HOME=/opt/java/1.7 PATH=/opt/java/1.7/bin:$PATH java ${ARGS}

相关内容