pra*_*bhu 5 java jdk environment-variables openjdk software-installation
操作系统:Ubuntu 18.04
\n\n我之前已经安装了 Oracle Java 8。但决定切换到 open JDK 11。\nit\ 已成功安装。\n java -version
\nopenjdk 版本“11.0.2”2019-01-15\nOpenJDK 运行时环境(内部版本 11.0.2+9-Ubuntu-3ubuntu118 .04.3)\nOpenJDK 64位服务器虚拟机(内部版本11.0.2+9-Ubuntu-3ubuntu118.04.3,混合模式,共享)
然后我设置 JAVA_HOME\n sudo nano /etc/environment \n文件更改:\nPATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin :/usr/games:/$\nJAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64/"
\n\n然后执行:\nsource /etc/environment
\n\n回声 $JAVA_HOME
\n/usr/lib/jvm/java-11-openjdk-amd64/
但是当我退出终端然后再次启动终端时: \n我得到以下输出:
\n\n\xe2\x96\xb6 echo $JAVA_HOME\n/usr/lib/jvm/java-8-oracle
\n\n您可以看到这不是预期的结果。\n请帮助我
\n答案和一些评论集中在如何设置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 ...)
Run Code Online (Sandbox Code Playgroud)
这是我的系统返回的结果。你的可能会有所不同。长话短说,罪魁祸首是/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
Run Code Online (Sandbox Code Playgroud)
您可能猜测/etc/profile.d/jdk.csh
也需要改变。事实上它包含与/etc/profile.d/jdk.sh
有一种比逐行浏览文件并将 an 更改8
为11
.
最简单的方法是使用 Java 安装程序。来自Ask Ubuntu Q&A:将 JDK 7 设置为默认值
要获取已安装的 Java 平台的列表,请从终端运行以下命令:
sudo update-alternatives --config java
Run Code Online (Sandbox Code Playgroud)
这将为您提供类似于以下内容的列表输出:
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:
Run Code Online (Sandbox Code Playgroud)