java - 如何找到我定义 JAVA_HOME 的位置

标签 java bash java-home

这是我的系统信息

wangbo@ubuntu:~$ uname -a
Linux ubuntu 4.4.0-72-generic #93-Ubuntu SMP Fri Mar 31 14:07:41 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

当我检查java版本时

java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

但是当我回显 $JAVA_HOME 时

/usr/lib/jvm/java-9-oracle

它是无与伦比的,好像我在某个地方定义了$JAVA_HOME,但是我找不到它,任何人都可以帮助我如何找到我定义的$JAVA_HOME

其他有用信息:

  1. 我之前安装和卸载 jdk9 作为第一个 jdk
  2. 它不在 ~/.bashrc 中
  3. 它不在/etc/bash.bashrc 中
  4. 它不在 ~/.profile 中

更新

wangbo@ubuntu:~$ more /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

最佳答案

1) JAVA_HOME 很可能定义在 /etc/profile.d/jdk.sh/etc/profile.d/jdk.csh 不幸的是,这些文件不是由 update-alternatives 系统管理的。

2) 您运行哪个可执行文件应该取决于 update-alternatives 系统,但是如果您在您的 PATH 中强制执行了一个特定版本,它就不会。

许多 java 应用程序实际上是由脚本调用的,这些脚本选择它们首选的 jvm 设置一致的环境,并且不应受到您的问题的影响。最好为 shell 的免费 java 调用提供一致的环境,但是,在大多数安装中,我知道这是手动实现的...

一些 java 发行版根本不需要 JAVA_HOME。在其他情况下,您需要它。我的建议是只有当你需要它时才定义 JAVA_HOME。如果是这种情况,请在 shell 脚本中定义它并使用该脚本调用您需要该特定值的命令。

编辑:/etc/profile.d/jdk.sh 似乎是由oracle-java8-set-default 安装的。

# Uninstall the package (choose one)
sudo apt purge oracle-java8-set-default
sudo apt remove --purge oracle-java8-set-default

# Configure the desired Java binary
sudo update-alternatives --config java
sudo update-alternatives --config javac

关于java - 如何找到我定义 JAVA_HOME 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43229474/

相关文章:

java - 包装第三方库时包装异常

windows - Windows7运行elasticsearch.bat找不到任何可执行的Java二进制文件。请在您的PATH中安装Java或设置JAVA_HOME

linux - 是否可以在 Linux 中设置 2 JAVA_HOME?

bash - Inotifywait 子文件夹 zip 创建

linux - shell脚本-bump版本自动git

linux - Grails 的 JAVA_HOME 问题

java - 使用 JSONObject 在 Java 中为以下结构创建嵌套 JSON 对象?

java - 如何将非最终变量传递给匿名内部类?

java - 在 HttpClient 中开启日志记录

bash - 如何检查是否在 Cygwin、Mac 或 Linux 中运行?