使用不同的java版本来运行两个程序

使用不同的java版本来运行两个程序

我在新的 CentOS 上安装了两个 JAVA JRE,因为 Cassandra 需要 java7u25 或更高版本,而 iReport 需要使用 1.6。

现在,如何从命令行启动每个程序,告诉每个程序使用哪个版本?

我必须更改文件吗/etc/profile?如果是这样怎么办?

答案1

让他们两个都加入是没有意义的$PATH因为只有一个会被使用。您可以将一个符号链接到不同的名称 - 例如java6- 我从未尝试过使用 java 并且不确定它是否有效。

执行此操作的最佳方法是将其中一个(大概是 1.6)安装在类似 的位置/opt/java6,将 1.7 保留为默认值。然后当你想使用 6 时:

export PATH=/opt/java6/bin:$PATH

并从命令行启动它。您还可以将所有这些放在一个脚本中。之后不要尝试从同一个 shell 运行 Cassandra,除非您将其删除$PATH(检查的简单方法是echo $PATH)。

要针对一个特定应用程序自动执行此操作:

#!/bin/sh

export PATH=/opt/java6/bin:$PATH
exec /path/to/application

然后,您可以将其放在常规中的某个位置$PATH(例如,/usr/local/bin),确保它是可执行的(chmod 755 whatever.sh)并以这种方式启动应用程序。这样它就不会影响$PATH启动它的过程。

答案2

这对于从终端模拟器启动和从桌面图标启动器启动都有效,因为我的程序无法使用默认的 openJRE-11 运行。将 Debian-10 破坏者与 XFCE 结合使用

/bin/sh -c 'JAVA_HOME=/usr/lib/jvm/java-8-oracle/ PATH=$JAVA_HOME/bin/:$PATH /home/username/myapplication' 也可以尝试: JAVA_HOME=/usr/lib/jvm/java-8-oracle/ PATH=$JAVA_HOME/bin/:$PATH /home/username/myapplication

您还可以为每个 java 版本创建一个别名,这样像 j8o = 之类的简短命令/bin/sh -c 'JAVA_HOME=/usr/lib/jvm/java-8-oracle/ PATH=$JAVA_HOME/bin/:$PATH和最终的日常命令将是j8o ./myapplication

要更改默认 java update-alternatives --config java,请按照提示操作。如果需要,同样可以用于设置 javac(字节码编译器)的默认值。可能需要 sudo 来更改默认值。

相关内容