update-alternatives
选择了默认值。但这由于debian策略而没有设置JAVA_HOME
环境变量。我正在编写启动脚本(bash),用于启动Java应用程序。该Java应用程序需要
JAVA_HOME
环境变量。那么如何获取update-alternatives
当前选择的JVM的路径?#1 楼
对于JRE,应使用以下方法解决问题:JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
#2 楼
可以轻松地采用danadam的解决方案来根据需要检索JDK(即不是JRE)路径:JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
查找Javac Java编译器(而不是Java)
没有尾随/(被sed s:/ bin ...而不是s:bin ...剥离)
评论
在最新型号Ubuntu 18.04上为我生成/ usr
–rjurney
20/12/04在23:11
#3 楼
export JAVA_HOME=$(dirname $(dirname $(readlink -f /usr/bin/java)))
在
.bashrc
对我来说很方便。#4 楼
所以,您是说这个命令对您没有任何作用?sudo update-alternatives --config java
评论
那是应该设置您的JAVA_HOME吗?我发现update-java-alternatives是更新Java的更好方法,因为update-alternatives不会更新所有与Java相关的替代方法。参见askubuntu.com/questions/141791
–詹姆斯·麦克马洪
2012年7月30日13:56
是的,但是我遇到了具有update-alternatives但没有安装update-java-alternatives的Linux实例。
– djangofan
14年6月29日在17:16
#5 楼
我用sudo apt-get install openjdk-7-jre-headless
安装了Java,然后找到了位置
ls -al /etc/alternatives/java
#6 楼
作为danadams的扩展,答案是:首先,将第2个Java JRE作为第3个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'命令的作用。尽管您仍然需要为javaw和javac等设置链接,但每个链接都是单独完成的。
#7 楼
不久前,我在Ubuntu论坛上创建了一个教程,介绍如何从Java网站安装最新的JRE / JDK。它还通过将JRE / JDK位置添加到PATH变量中,介绍了如何在系统范围内启用它。如果您愿意,还可以将JAVA_HOME添加到本主题末尾提到的脚本中。签出它: = 1437100
#8 楼
如果用update-alternatives
配置了java或将java手动添加到了PATH变量中,则不需要硬编码的"/usr/bin/java"
。我在.bashrc中使用此解决方案:export JAVA_HOME=$(readlink -m $(which java)/../..)
评论
我需要JDK而不是JRE的目录,但是我使用了以下代码:JAVA_HOME = $(readlink -f / usr / bin / javac | sed“ s:bin / javac ::”)谢谢!
–Witek
2010年5月22日晚上10:35
当我尝试命令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
2014年1月31日5:20
rsaddey中给出的代码可以正常工作
– Sumit Ramteke
2014年1月31日5:28
你是学者和绅士。
–rjurney
20 Dec 4'在23:09