在Ubuntu中设置JAVA_HOME环境变量

11

我在Ubuntu上还是比较新手,在终端中输入以下命令:

mortar local:illustrate pigscripts/retail-recsys.pig purchase_input -f params/retail.params

但是我遇到了以下错误:

找不到适合的Java安装程序。如果您已经安装了Java,请在继续之前设置JAVA_HOME环境变量。否则,需要将适当的Java安装程序添加到本地系统中。

安装Java

在OSX上,从命令行运行javac。这将开始安装过程。对于Linux系统,请参阅相关软件包管理器的文档。

但我很确定我已经安装了Java,请问如何设置JAVA_HOME环境变量?


1
我进行了一些搜索,发现了与Mortar相关的这个文档页面。我敢打赌这就是你在运行/安装时想要使用来导出JAVA_HOME的工具。 - Makoto
9个回答

20

首先,您需要决定要使用哪个已安装的Java版本?别担心,您可以选择任何一个已安装的版本 -

update-java-alternatives -l

一个“简单”的解决方案是将此内容添加到“$HOME/.bashrc”中,

export JAVA_HOME=$(update-java-alternatives -l | head -n 1 | awk -F ' ' '{print $NF}')

这会选择第一个安装的JDK并获取其JAVA_HOME(第三个字段)- 在我的系统上是

/usr/lib/jvm/java-1.7.0-openjdk-amd64

这只是一个临时解决方案,重启后将被清除。 - IgorGanapolsky
2
@IgorGanapolsky 不会,如果你将它添加到“.bashrc”中,它就不会。 - Elliott Frisch
在Ubuntu 14.04上,当我通过apt安装jdk时,会创建一个符号链接/usr/lib/jvm/default-java。我将其用于JAVA_HOME环境变量。 - RobotNerd
1
我需要更新这个解决方案,以适应Ubuntu 16.4,并消除3个部分之间的多个空格。因此,我使用export JAVA_HOME=$(update-java-alternatives -l | head -n 1 | sed 's/ */ /g' | cut -f3 -d' ') - Niels Basjes

6
export JAVA_HOME=/usr/lib/jvm/java-7-oracle

在你的~/.bashrc文件中。

如果你希望这个环境变量对所有用户可用,并在系统启动时生效,你可以将以下内容添加到/etc/profile.d/java.sh中(如果需要,请创建它):

export JDK_HOME=/usr/lib/jvm/java-7-oracle
export JAVA_HOME=/usr/lib/jvm/java-7-oracle

然后在终端中运行:

sudo chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh

2
最简单的设置环境变量的方法是使用export命令:
    $ export JAVA_HOME="/usr/bin"

这将临时设置所需变量。您可以使用以下方式检查它是否已设置:

    $ echo $JAVA_HOME

或者

    $ printenv

如果您希望获得更持久的解决方案,请将“export JAVA_HOME="/usr/bin"”添加到.bashrc或.bash_profile文件中。

要检查Java是否已正确安装:

    $ which java
    $ which javac

您应该获得类似的输出:
    /usr/bin/java

1
为什么要使用 /usr/bin/java?如果我从 Oracle 下载 JDK 到另一个目录,会发生什么? - IgorGanapolsky
那只是一个特定的例子 :) - PovilasB
如果您计划使用多个Java版本,则这是最佳答案。这允许您使用update-alternatives设置Java版本,并且它将在整个系统中起作用。 - loctrice
应该设置为 export JAVA_HOME=/usr,否则系统会在 /usr/bin/bin 中寻找 java 可执行文件。 - pacoverflow

2

为了让JAVA_HOME指向活动的jdk,需要将其添加到~/.bashrc中。

export JAVA_HOME=$(update-alternatives --query javac | sed -n -e 's/Best: *\(.*\)\/bin\/javac/\1/p')

这将动态设置$JAVA_HOME为由update-alternatives选择的JDK。


非常感谢,这是最好的答案 :) - Anshuman Pattnaik
为了获取当前配置的备选项,我认为应该是:update-alternatives --query javac | sed -n -e 's/Value: *\(.*\)\/bin\/javac/\1/p' - rbarriuso

1
在Debian/Ubuntu/Linux Mint中,我们可以将以下内容添加到.bashrc文件中: export JAVA_HOME=$(update-java-alternatives -l | head -n 1 | sed 's/\s//g')

1

将行export JAVA_HOME=/usr/lib/jvm/java-xxx-oracle放在您的家目录下的.profile文件中。请注意,您需要替换xxx。您可能需要注销并重新登录。


0
通常情况下,你可以在代码中设置路径。

~/.bashrc

使用 export JAVA_HOME=/usr/lib/jvm/java-version 命令进行导出。

但是您可以从这里遵循详细的说明。


我在.bashrc中设置了它,但是我需要重新启动吗?它没有生效。 - IgorGanapolsky

-1

到目前为止,这里是最终指南。你不需要设置PATH,只需要调整默认的“Java替代”位置。


-1

你可以在终端中输入java,如果不起作用则意味着你没有安装java。如果它能工作,输入javac。如果javac无法工作,你应该设置java环境变量;如果它工作了,则可能是你的程序出了问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接