如何在Ubuntu中找到我的当前JAVA_HOME?在安装Maven时,我必须设置java_home路径。
JAVA_HOME
变量路径,请在终端中输入:echo $JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
$ jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'
/opt/local/jdk1.7.0_76/jre
$ export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"
jrunscript
,因此只有在安装了JDK而不仅仅是JRE的情况下才能正常工作。java
中提取JRE的绝对路径。export JAVA_HOME=`type -p java|xargs readlink -f|xargs dirname|xargs dirname`
绝对路径 java
传递给 dirname
两次,以删除末尾的 /bin/java
。完整目录提取如下:
$ type -p java
/usr/bin/java
$ readlink -f /usr/bin/java
/usr/lib/jvm/java-8-oracle/bin/java
$ dirname /usr/lib/jvm/java-8-oracle/bin/java
/usr/lib/jvm/java-8-oracle/bin/
$ dirname /usr/lib/jvm/java-8-oracle/bin/
/usr/lib/jvm/java-8-oracle/
type -p javac|xargs readlink -f|xargs dirname|xargs dirname
(不包括导出部分)来获取目录,而无需设置它。 - steoiatsljavac
。使用java
工作过。 - alanjdsjavac
改为java
。javac
只在JDK中可用。 - rzymek sudo update-alternatives --config java
Es gibt nur eine Alternative in Link-Gruppe java (die /usr/bin/java bereitstellt): /usr/lib/jvm/java-8-oracle/jre/bin/java
export JAVA_HOME=/usr/lib/jvm/java-8-oracle/
$ update-alternatives --query java | grep 'Value: ' | grep -o '/.*/jre'
$ export JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | grep -o '/.*/jre')"
/jre
。你可以尝试使用export JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | sed -e 's/Value: //;s?/jre/bin/java??;')"
。 - James Brusey[ -L /etc/alternatives/java ] &&
export JAVA_HOME="$(readlink -f /etc/alternatives/java | sed -e 's/\/jre\/bin\/java$//')"
java.home
系统属性。Nashorn 正在废弃,所以一个替代方案是使用在 Java 9 中引入的 jshell
。echo 'System.out.println(java.lang.System.getProperty("java.home"));' | jshell -
/usr/lib/jvm/java-11-openjdk-amd64
sudo apt install oracle-java8-set-default
JAVA_HOME
的方法:update-alternatives --query java | grep 'Value: ' | sed 's/Value: \(.*\)\/bin\/java/\1/'
## e.g. returns </opt/Oracle_Java/jre1.8.0_202>
## if </etc/alternatives/java> points to
## </opt/Oracle_Java/jre1.8.0_202/bin/java>
JAVA_HOME
的方法:export JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | sed 's/Value: \(.*\)\/bin\/java/\1/')"
... | sed 's@Value: \(.*\)/bin/java@\1@'
(这样你就不需要转义路径中的斜杠)。但对于新手来说,这看起来可能有些不寻常。 - Lenormju@
的话对我来说看起来很奇怪,而且我还得解决一个已经很复杂的问题,就像你所提到的一样。不过,如果它更合适的话,我个人会选择... | sed 's|Value: \(.*\)/bin/java|\1|'
(如果它能正常工作——我没有测试过)。 - Andreas Covidiot-XshowSettings:properties
的版本:alternatives
可能仍然受欢迎,但我主要使用jenv,偶尔也会用到sdkman,它们都引入了一定程度的间接性;如果你愿意直接询问java
本身:java -XshowSettings:properties -version |& grep -Po '(?<=java.home = )(.*)'
docker run --rm openjdk:6 java -XshowSettings:properties -version
Unrecognized option: -XshowSettings:properties
Could not create the Java virtual machine.
dk run --rm openjdk:7 bash -c "java -XshowSettings:properties -version |& grep -Po '(?<=java.home = |java.home=)(.*)'"
/usr/lib/jvm/java-7-openjdk-armhf/jre
JAVA_HOME并不会将jdk设置为默认值,它只是将JAVA_HOME变量设置为一个路径。如果你想在同一台机器上使用不同的jdk安装版本,请查看我的回答,我已经对其进行了编辑。
- Deepenecho $JAVA_HOME
。您忘记了美元符号($)。 - Deepen/etc/environment
文件来设置。是的,在退出会话之前,它们是相同的。最好在重启时设置在/etc/environment
中,你会发现JAVA_HOME。 - Deepen