如何在ubuntu中找到我当前的JAVA_HOME?


Answers:


84

输入终端,

echo $JAVA_HOME

显示JAVA_HOME变量路径。

如果没有出现,请使用此设置

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

这将根据您的JDK类型和版本而有所不同

要显示,请遵循第一个命令。

按照这篇文章使用不同的JDK或在JDK之间切换


它给出了“ / usr / lib / jvm / java-6-sun”。但是我已经安装了Java7。当我使用“ java -version”进行检查时,它给出的Java版本为“ 1.7.0_45”。Java(TM)SE运行时环境(内部版本1.7.0_45-b18)Java HotSpot(TM)服务器VM(内部版本) 24.45-b08,混合模式)
Samitha Chathuranga 2014年

2
然后执行第二条命令来设置JAVA_HOME变量。注意:JAVA_HOME doesn't make jdk default, it just makes JAVA_HOME variable set to a path & if you want to use different jdk installed on same machine then check my answer, I have edited it.
加深2014年

你应该设置在/ etc /环境
计器

@ Jax-L但是现在当我给回显JAVA_HOME时,它只是显示为“ JAVA_HOME”。我给的路径没有显示... ???
Samitha Chathuranga 2014年

2
导出仅在重新启动之前有效。或者,您将导出添加到.bashrc登录脚本。但是设置此类环境变量的正确方法是在/ etc / environment中
keiki 2014年

34

如果你有JDK 1.6(对应于Java 6中),或者安装了较新的版本,你应该有一个指定的程序jrunscript在你的PATH。您可以使用它来找到对应的JAVA_HOME。例:

$ 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"));')"

请注意,JRE不包括jrunscript,因此仅在安装JDK时才有效,而不仅仅是JRE。


要弄清楚我需要更深入地查找一个目录,要花很多时间,但是谢谢。
cnizzardini

15

另一个可移植的选项是从以下位置提取JDK的绝对路径javac

export JAVA_HOME=`type -p javac|xargs readlink -f|xargs dirname|xargs dirname`

绝对javac路径将传递到dirname两次以/bin/javac从末尾删除。完整提取目录如下:

$ type -p javac
/usr/bin/javac

$ readlink -f /usr/bin/javac
/usr/lib/jvm/java-8-oracle/bin/javac

$ dirname /usr/lib/jvm/java-8-oracle/bin/javac
/usr/lib/jvm/java-8-oracle/bin/

$ dirname /usr/lib/jvm/java-8-oracle/bin/
/usr/lib/jvm/java-8-oracle/

1
type -p javac|xargs readlink -f|xargs dirname|xargs dirname无需设置即可使用(无需导出部分)知道目录。
米娜·迈克尔

正是我想要的!辉煌的答案!
Silviu Burcea

7

要考虑更新替代机制:

$ update-alternatives --query java | grep 'Value: ' | grep -o '/.*/jre'

您可以这样设置环境变量:

$ export JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | grep -o '/.*/jre')"

这并不能给出JAVA_HOME,因为它仍然带有尾随/jre。您可以尝试export JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | sed -e 's/Value: //;s?/jre/bin/java??;')"
James Brusey

7

只需运行一个命令

 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

从这里,您可以将/ usr / lib / jvm / java-8-oracle /作为java主页。您现在可以将其导出到JAVA_HOME变量

export JAVA_HOME=/usr/lib/jvm/java-8-oracle/

现在echo $ JAVA_HOME显示它


1

我在Ubuntu LTS(14.04 / 16.04)中使用了它:

[ -L /etc/alternatives/java ] && 
  export JAVA_HOME="$(readlink -f /etc/alternatives/java | sed -e 's/\/jre\/bin\/java$//')"


0

对于Java 9和更高版本:

这个答案https://askubuntu.com/a/657468/963使用随附的Nashorn JavaScript引擎Nashorn打印java.home系统属性。Nashorn已被弃用,因此可以使用jshellJava 9中引入的替代方法。

echo 'System.out.println(java.lang.System.getProperty("java.home"));' | jshell  -

在我的Ubuntu 18.10系统上会显示以下内容:

/usr/lib/jvm/java-11-openjdk-amd64
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.