在Ubuntu上,可以同时拥有多个JVM。 默认的一个是使用update-alternatives
。 但是由于debian策略 ,这不会设置JAVA_HOME
环境variables。
我正在写一个启动脚本(bash),它启动一个Java应用程序。 这个Java应用程序需要JAVA_HOME
环境variables。 那么如何获得当前由update-alternatives
选中的JVM的path呢?
对于JRE,这样的事情应该可以做到:
JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
可以很容易地采用danadam的解决scheme来根据需要检索JDK(即不是JRE)path:
JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
export JAVA_HOME=$(dirname $(dirname $(readlink -f /usr/bin/java)))
在.bashrc
对我来说很方便。
那么,你说这个命令对你什么都不做?
sudo update-alternatives --config java
我用java安装了
sudo apt-get install openjdk-7-jre-headless
然后find位置
ls -al /etc/alternatives/java
作为danadams的延伸回答:
首先,安装第二个Java JRE作为第三个Java选项,优先级为“3”:
sudo alternatives --install /usr/lib/jvm/jre jre /opt/IBM/java/jre/bin/java 3
那么,你可以列出他们:
update-alternatives --list java
你可以手动设置替代,使用这个:
sudo alternatives --config java /opt/IBM/java/jre/bin/java
然后,你的脚本可以设置它,如下所示:
sudo alternatives --set java /opt/IBM/java/jre/bin/java JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
这更好地说明了'sed'命令在做什么。 尽pipe您仍然需要为javaw和javac等设置链接,但每个链接都要单独完成。
前一段时间,我在Ubuntu论坛上创build了一个关于如何从Java网站安装最新的JRE / JDK的教程。 还介绍如何通过将JRE / JDK位置添加到PATHvariables来启用系统范围。 如果你喜欢,也可以在主题末尾提到的脚本中添加JAVA_HOME。
检查出来: http : //ubuntuforums.org/showthread.php?t=1437100