回答问题

回答问题

操作系统:UBUNTU 18.04

我之前安装了 Oracle Java 8。但决定切换到 JDK 11。它已成功安装。 java -version
openjdk 版本“11.0.2”2019-01-15 OpenJDK 运行环境(构建 11.0.2+9-Ubuntu-3ubuntu118.04.3)OpenJDK 64 位服务器 VM(构建 11.0.2+9-Ubuntu-3ubuntu118.04.3,混合模式,共享)

然后我设置了 JAVA_HOME sudo nano /etc/environment 文件更改:PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/$ JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64/"

然后执行:source /etc/environment

回显 $JAVA_HOME
/usr/lib/jvm/java-11-openjdk-amd64/

但是当我退出终端并再次启动终端时: 我得到这个输出:

▶ 回显 $JAVA_HOME /usr/lib/jvm/java-8-oracle

您会发现这不是预期的结果。请帮助我

答案1

回答问题

答案和一些评论重点关注如何设置JAVA_HOME为版本 11,但问题部分是关于“版本 8 在哪里设置?”。要回答这个问题,请参阅:

使用此命令:

$ sudo grep -rnw --exclude-dir={boot,dev,lib,media,mnt,proc,root,run,sys,/tmp,tmpfs,var} '/' -e '/usr/lib/jvm/java-8-oracle' | grep JAVA_HOME

/etc/profile.d/jdk.sh:4:export JAVA_HOME=/usr/lib/jvm/java-8-oracle
/etc/profile.d/jdk.csh:4:setenv JAVA_HOME /usr/lib/jvm/java-8-oracle
/home/rick/.gradle/daemon/4.6/daemon-14831.out.log:53:20:45:23.553 [DEBUG] (... SNIP ...) /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin (... SNIP ...) Configuring env variables: {PATH=/home/rick/bin:/home/rick/.local/bin:/mnt/e/bin:/mnt/e/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin,  (... SNIP ...) 

这是我的系统返回的结果。你的系统可能有所不同。长话短说,罪魁祸首是/etc/profile.d/jdk.sh

$ cat /etc/profile.d/jdk.sh

setenv J2SDKDIR /usr/lib/jvm/java-8-oracle
setenv J2REDIR /usr/lib/jvm/java-8-oracle/jre
setenv PATH ${PATH}:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin
setenv JAVA_HOME /usr/lib/jvm/java-8-oracle
setenv DERBY_HOME /usr/lib/jvm/java-8-oracle/db

你可能猜测/etc/profile.d/jdk.csh也需要改变。事实上,它包含的内容与/etc/profile.d/jdk.sh


解决 XY 问题

有一种比逐行浏览文件并将 更改8为更好的方法11

最简单的方法是使用 Java 安装程序。从这里询问 Ubuntu 问答将 JDK 7 设置为默认值

要获取已安装的 Java 平台列表,请从终端运行以下命令:

sudo update-alternatives --config java

这将给你一个类似这样的列表输出:

There are 2 choices for the alternative java (providing /usr/bin/java).
   Selection    Path                                           Priority   Status
  ------------------------------------------------------------
  0            /usr/lib/jvm/java-6-oracle/jre/bin/java         1070      auto mode
  1            /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java   1051      manual mode
* 2            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java   1069      manual mode
Press enter to keep the current choice[*], or type selection number: 

答案2

最简单的设置位置是在 .bashrc 中,可以通过以下方式快速完成:

echo JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/ >> .bashrc

这将使其成为 bash 初始化时读取的最后一行,并确保正确设置了 JAVA_HOME。如果您需要执行更复杂的事情,则需要阅读一些有关终端如何初始化的内容。我建议您先在 google 上搜索 bashrc。

答案3

尝试阅读链接中的这些答案。它们涉及使环境变量更改持久化。我认为发生的事情是,在您关闭终端后,它们会恢复。这是链接: 使环境变量更改持久化

相关内容