我在工作中使用openjdk,但有时我需要oracle的jre甚至特定版本的oracle的jre。据我所知,我应该更新JAVA_HOME
值和/usr/bin/java
/或/etc/alternatives/java
链接目的地。是否有一种智能/安全/简单的方法可以使这些更改针对特定流程临时进行?谢谢你! (我正在使用 debian linux 不稳定的仓库)
答案1
是否有一种智能/安全/简单的方法可以使这些更改针对特定流程临时进行?
诸如此类的环境变量$JAVA_HOME
是继承的,而不是系统全局的。因此,如果您设置一种特定的方式,它仅适用于该进程,并且如果导出,则适用于它生成的任何进程。
这里的进程将是一个 shell 实例;您可以在命令行上执行此操作或创建如下内容:
#!/bin/sh
PATH=/opt/oracle/java/bin:$PATH
export $PATH
exec whatever.jar
如果您不熟悉如何$PATH
工作,则会按顺序检查目录,因此在这种情况下,/opt/oracle/java/bin
将在其他任何内容之前进行搜索,并且当java
需要时,将使用那里的目录。
您可以在调用它时详细说明它以使用参数来指定要执行的文件.jar
或.class
文件,以及要使用的 java 安装的一些速记参数,例如if [[ $1 == 2 ]]; then PATH=/opt/oracle2/java/bin...
。
那$PATH
(并且$JAVA_HOME
,如果您也这样做)将仅适用于脚本及其启动的任何内容。
如果您正在处理某件事,您可以export
在一个终端中使用变量,并且它将继续应用于该终端并且仅应用于该终端。如果安装了 JDK,同一bin
目录中包含javac
等。