我在新的 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 来更改默认值。