题 如何在Debian / Ubuntu上确定JAVA_HOME?


在Ubuntu上,可以同时拥有多个JVM。选择默认值为 update-alternatives。但这并没有设定 JAVA_HOME 环境变量,由于a debian政策

我正在编写一个启动脚本(bash),它启动一个java应用程序。这个java应用程序需要 JAVA_HOME 环境变量。那么如何获取当前选中的JVM的路径 update-alternatives


90
2018-05-20 15:09






答案:


对于JRE,这样的事情应该可以解决问题:

JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

133
2018-05-20 17:55



我需要JDK的主页而不是JRE,但我使用了JAVA_HOME = $(readlink -f / usr / bin / javac | sed“s:bin / javac ::”)谢谢! - Witek
当我尝试命令时 echo $(readlink -f /usr/bin/java | sed "s:bin/java::"),输出是 /usr/lib/jvm/java-7-oracle/jre/ 并不是 /usr/lib/jvm/java-7-oracle/ - Sumit Ramteke
代码见 rsaddey 工作正常 - Sumit Ramteke


可以很容易地采用danadam的解决方案来根据需要检索JDK(即非JRE)路径:

JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
  • 查找JDK中包含的javac Java编译器(而不是Java)(但不包括JRE)。
  • 没有尾随/(被sed s:/ bin ...而不是s:bin ...剥离)

43
2018-06-02 08:44





export JAVA_HOME=$(dirname $(dirname $(readlink -f /usr/bin/java)))

.bashrc 对我来说很方便。


12
2018-04-25 09:34





所以,你说这个命令对你没有任何作用?

sudo update-alternatives --config java 

9
2018-05-20 15:14



这是假设设置你的JAVA_HOME吗?我发现更新-java-alternatives是更新Java的更好方法,因为更新替代方案不会更新所有与Java相关的替代方案。看到 askubuntu.com/questions/141791 - James McMahon
没错,但是我遇到过具有更新替代品但没有安装update-java-alternatives的Linux实例。 - djangofan


我用java安装了

sudo apt-get install openjdk-7-jre-headless

然后找到位置

ls -al /etc/alternatives/java

3
2018-03-05 03:40





作为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'命令正在做什么。虽然您仍然需要为java和javac等设置链接,但每个链接都是单独完成的。


2
2018-03-02 16:40





不久前,我在Ubuntu论坛上创建了一个关于如何从Java网站安装最新JRE / JDK的教程。它还介绍了如何在系统范围内启用它,方法是将JRE / JDK位置添加到PATH变量中。如果您愿意,还可以将JAVA_HOME添加到主题末尾提到的脚本中。

看看这个: http://ubuntuforums.org/showthread.php?t=1437100


1
2018-05-20 18:47