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

Sam*_*nga 74 java home-directory

如何在 ubuntu 中找到我当前的 JAVA_HOME?安装 maven 时我必须设置 java_home 路径。

Dee*_*pen 109

要显示JAVA_HOME变量路径,请在终端中输入:

echo $JAVA_HOME
Run Code Online (Sandbox Code Playgroud)

如果什么都没有出现,那么设置它:

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
Run Code Online (Sandbox Code Playgroud)

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

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

遵循同一系统上不同供应商的 JRE,以使用不同的 JDK 或在 JDK 之间切换。

  • 然后执行第二个命令来设置 JAVA_HOME 变量。注意:`JAVA_HOME 不会使 jdk 成为默认值,它只是将 JAVA_HOME 变量设置为路径,如果您想使用安装在同一台机器上的不同 jdk,请检查我的答案,我已经编辑了它。` (2认同)
  • 导出仅在您重新启动之前有效。或者您将导出添加到 .bashrc 登录脚本。但是设置此类环境变量的正确方法是在 /etc/environment (2认同)

小智 39

如果您安装了 JDK 1.6(对应于 Java 6)或更新版本,您应该jrunscriptPATH. 您可以使用它来查找相应的JAVA_HOME. 例子:

$ jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'
/opt/local/jdk1.7.0_76/jre
Run Code Online (Sandbox Code Playgroud)

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

$ export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"
Run Code Online (Sandbox Code Playgroud)

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


rzy*_*mek 26

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

export JAVA_HOME=`type -p java|xargs readlink -f|xargs dirname|xargs dirname`
Run Code Online (Sandbox Code Playgroud)

绝对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/
Run Code Online (Sandbox Code Playgroud)

  • 可以使用`type -p javac|xargs readlink -f|xargs dirname|xargs dirname`(不带导出部分)来知道目录而不设置它。 (2认同)

小智 8

考虑到更新替代机制:

$ update-alternatives --query java | grep 'Value: ' | grep -o '/.*/jre'
Run Code Online (Sandbox Code Playgroud)

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

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


小智 7

只需运行一个命令

 sudo update-alternatives --config java
Run Code Online (Sandbox Code Playgroud)

它会给出类似的东西

Es gibt nur eine Alternative in Link-Gruppe java (die /usr/bin/java bereitstellt): /usr/lib/jvm/java-8-oracle/jre/bin/java
Run Code Online (Sandbox Code Playgroud)

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

export JAVA_HOME=/usr/lib/jvm/java-8-oracle/
Run Code Online (Sandbox Code Playgroud)

现在 echo $JAVA_HOME 显示它