UBUNTU 16.04:如何为Java设置JAVA_HOME?

我正在按照这个链接 如何为Java设置JAVA_HOME? 来设置环境变量JAVA_HOME到正确的版本。如下图所示,我在/usr/lib/jvm/文件夹中有不同版本的java

enter image description here

我在环境文件中添加了JAVA_HOME="/usr/lib/jvm/java-8-oracle"
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
JAVA_HOME="/usr/lib/jvm/java-8-oracle"
export JAVA_HOME

然而,如果我运行google-refine,我会遇到以下错误:
./refine: 98: [: /tmp/refine.S4a2EGD: unexpected operator
Google Refine requires Java version 6 or later. If you have multiple versions of Java installed, please set the environment variable JAVA_HOME to the correct version.

第二张图片中的文字太难读了,你能否编辑并将那三行文字复制粘贴到你的问题中? - usmanayubsh
2@usmanayubsh 我把图像替换成了文件的文本内容。 - emax
1请执行以下命令进行检查:java -versionprintenv | grep JAVA_HOME。如果 $JAVA_HOME 没有任何输出,您必须在以下文件的末尾添加新的 PATH 定义:~/.bashrc~/.profile - Redbob
@Redbob如果我输入java -version,我得到的结果是java version "1.8.0_144" Java(TM) SE Runtime Environment (build 1.8.0_144-b01) Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode);而当我输入printenv | grep JAVA_HOME时,我得到的结果是JAVA_HOME=/usr/lib/jvm/java-8-oracle - emax
1请执行以下命令:sudo update-alternatives --display java。或许 Google-refine 无法理解您的默认 Java,或者它与 JDK(您正在运行 JRE)兼容性更好。如果上述命令的结果与预期不符,请访问此页面调整您的 Java 环境 - Redbob
@Redbob 我有 java - 自动模式 最佳版本链接为 /usr/lib/jvm/java-8-oracle/jre/bin/java 当前链接指向 /usr/lib/jvm/java-8-oracle/jre/bin/java java 链接为 /usr/bin/java slave java.1.gz 为 /usr/share/man/man1/java.1.gz /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java - 优先级 1081 slave java.1.gz: /usr/lib/jvm/java-8-openjdk-amd64/jre/man/man1/java.1.gz /usr/lib/jvm/java-8-oracle/jre/bin/java - 优先级 1081 slave java.1.gz: /usr/lib/jvm/java-8-oracle/man/man1/java.1.gz - emax
可能Oracle Java对Google-refine没有优先级,即使JAVA_HOME已经设置好了。按照这些说明将Oracle Java设为系统的优先级。在我的情况下,我更愿意卸载其他所有Java版本,只保留Oracle Java。 - Redbob
旁注:那行export JAVA_HOME是多余的。/etc/environment不是一个脚本文件。 - Gunnar Hjalmarsson
1个回答

如果您从ppa安装了Java,它会在本地设置JAVA_HOME的路径。
/etc/profile.d/jdk.sh

在用户登录时添加到环境中。您可以编辑此文件,或者如果您使用etckeeper,则更好的方法是将此文件检出到任何所需版本。