Ubuntu:java_home环境变量存储在哪里?

5

我已经通过以下命令安装了Java:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer
sudo update-java-alternatives -s java-7-oracle

如果我理解正确,上面的命令将确保Java自动更新。我一直在成功使用Eclipse、STS和Tomcat,因此我相信Java已经正确安装了其环境。但我想知道java_home环境变量的位置。我尝试过:
  1. gedit /etc/environment I found:

    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$GRADLE_HOME/bin"
    GRADLE_HOME="/opt/gradle/gradle-1.6"
    
  2. whereis java (I believe that this is just a file find)

    java: /usr/bin/java /usr/bin/X11/java /usr/share/java /usr/share/man/man1/java.1.gz
    
  3. gedit ~/.pam_environment But it is completely empty

  4. gedit ~/.bashrc and after gedit .profile (I believe that this is just script files that run while starting linux). But I didn't find any string with "java".

  5. printenv JAVA_HOME (I believe that this only prints variables set by export and it is valid only for the exact session you set) But nothing has printed.

我是新手Linux用户,请问有人可以帮我找到系统中的Java环境,并请纠正我之前写的任何错误认识吗?

JAVA_HOME不是JRE的一部分(请参见此答案)。它只是一些基于Java的工具使用的约定。您不应该期望任何安装为您设置它。 - erickson
顺便提一下,在将GRADLE_HOME变量包含在您的PATH中之前,需要先设置它。 - tripleee
4个回答

8

您可以使用

grep JAVA_HOME /etc/environment /etc/bash.bashrc /etc/profile.d/* /etc/profile

在我的情况下,在Ubuntu 18.04中从webupd8team ppa安装java后,设置和导出JAVA_HOME变量的脚本位于:
/etc/profile.d/jdk.csh:setenv JAVA_HOME /usr/lib/jvm/java-8-oracle
/etc/profile.d/jdk.sh:export JAVA_HOME=/usr/lib/jvm/java-8-oracle

4
使用webupd8team ppa安装java时,您需要自己设置JAVA_HOME环境变量。有许多方法可以实现这一点。我是按照以下步骤完成的:
1. 运行sudo update-alternatives --config java命令获取java安装列表。它还将显示java可执行文件的位置,例如/usr/lib/jvm/java-8-oracle/jre/bin/java。
2. 从您使用的java安装中选择路径,直到jre。例如:/usr/lib/jvm/java-8-oracle/。此路径将成为您的JAVA_HOME路径。
3. 然后编辑您的~/.bashrc文件并添加以下行:export JAVA_HOME="/usr/lib/jvm/java-8-oracle/"。
4. 要么重新启动终端,要么键入bash。
这样应该设置了JAVA_HOME环境变量。

1

我现在没有安装Java的Ubuntu,但是我以前做过这个。http://www.janosgyerik.com/installing-java-and-setting-java_home-in-ubuntu/

编辑/etc/jvm,在列表顶部添加此行:/path/to/your/jvm,在您的情况下可能是:/usr/lib/jvm/java-7-oracle,但您需要检查,也许 locate java-7-oracle 可以帮助。

由于以上步骤,java可执行文件将找到正确版本的Java。您可以通过运行以下命令来确认此操作:

java -version

然而,设置JAVA_HOME是另一回事。这些命令在我旧版本的Ubuntu中可以用来检测、设置和确认JAVA_HOME
. /usr/share/java-common/java-common.sh
eval $(jvm_config)
export JAVA_HOME
echo $JAVA_HOME

如果输出结果良好,则将这些行添加到您的~/.bashrc~/.profile中。

谢谢你们两位回答我的问题。 - DemeCarv
Janos,我注意到我的Ubuntu中/etc/jvm是空的,但是根据您有关locate的说明,我认为我可以提出更具体的问题:在Windows中,我必须设置java环境变量,否则Eclipse将无法运行。现在,作为我在Linux上的第一项工作,我只安装了Java,但我没有为Java设置任何环境变量,但令我惊讶的是Eclipse完美地运行。我猜在Linux中由于某种原因,设置环境变量对于Eclipse的工作不是必需的。我注意到有一个链接。 - DemeCarv
我注意到在 /usr/bin 中有一个指向 /etc/alternatives/java 的链接,而后者又是指向 /usr/lib/jvm/java-7-oracle/jre/bin/java 的链接。那么我猜在 Linux 中只需要在 /usr/bin 中放置一个指向二进制文件的链接就可以了。我说得对吗? - DemeCarv
@user79885 Eclipse需要JAVA_HOME来知道在哪里找到可以用于编译项目的Java。我猜这在Linux中更容易实现,例如很容易检测是否存在“java”可执行文件并跟踪其路径并找出正确的JAVA_HOME。这只是一个猜测,我不知道它是如何实现的。 - janos
@user79885...根据/usr/bin中的链接,请不要手动更改它们。让软件包管理器设置这些内容,或使用update-alternatives命令。 - janos
显示剩余2条评论

0

它位于/etc/bash.bashrc 你是对的,使用ppa存储库可以确保在更新系统时Java会自动更新。


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