一、查看是否已经安装了JDK
#查看本机是否已经安装了jdk
$ sudo yum list installed | grep java
java-1.8.-openjdk.x86_64 :1.8.0.201.b09-.el7_6 @updates
java-1.8.-openjdk-accessibility.x86_64 :1.8.0.201.b09-.el7_6 @updates
java-1.8.-openjdk-accessibility-debug.x86_64
java-1.8.-openjdk-debug.x86_64 :1.8.0.201.b09-.el7_6 @updates
java-1.8.-openjdk-demo.x86_64 :1.8.0.201.b09-.el7_6 @updates
java-1.8.-openjdk-demo-debug.x86_64 :1.8.0.201.b09-.el7_6 @updates
java-1.8.-openjdk-devel.x86_64 :1.8.0.201.b09-.el7_6 @updates
java-1.8.-openjdk-devel-debug.x86_64 :1.8.0.201.b09-.el7_6 @updates
java-1.8.-openjdk-headless.x86_64 :1.8.0.201.b09-.el7_6 @updates
java-1.8.-openjdk-headless-debug.x86_64
java-1.8.-openjdk-javadoc.noarch :1.8.0.201.b09-.el7_6 @updates
java-1.8.-openjdk-javadoc-debug.noarch :1.8.0.201.b09-.el7_6 @updates
java-1.8.-openjdk-javadoc-zip.noarch :1.8.0.201.b09-.el7_6 @updates
java-1.8.-openjdk-javadoc-zip-debug.noarch
java-1.8.-openjdk-src.x86_64 :1.8.0.201.b09-.el7_6 @updates
java-1.8.-openjdk-src-debug.x86_64 :1.8.0.201.b09-.el7_6 @updates
java-atk-wrapper.x86_64 0.30.-.el7 @base
javapackages-tools.noarch 3.4.-.el7 @base
python-javapackages.noarch 3.4.-.el7 @base
tzdata-java.noarch 2018i-.el7 @updates
二、卸载原有jdk
# *表示卸载所有以java-1.8.-openjdk开头的,-y 表示自动回复yes
$ sudo yum -y remove java-1.8.-openjdk* javapackages-tools.noarch python-javapackages.noarch tzdata-java.noarch
三、查看JDk软件包列表
$ sudo yum list java*
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors..com
* extras: mirrors..com
* updates: mirrors..com
可安装的软件包
java-1.6.-openjdk.x86_64 :1.6.0.41-1.13.13.1.el7_3 base # jdk6
java-1.6.-openjdk-demo.x86_64 :1.6.0.41-1.13.13.1.el7_3 base
java-1.6.-openjdk-devel.x86_64 :1.6.0.41-1.13.13.1.el7_3 base
java-1.6.-openjdk-javadoc.x86_64 :1.6.0.41-1.13.13.1.el7_3 base
java-1.6.-openjdk-src.x86_64 :1.6.0.41-1.13.13.1.el7_3 base
java-1.7.-openjdk.x86_64 :1.7.0.211-2.6.17.1.el7_6 updates # jdk7
java-1.7.-openjdk-accessibility.x86_64 :1.7.0.211-2.6.17.1.el7_6 updates
java-1.7.-openjdk-demo.x86_64 :1.7.0.211-2.6.17.1.el7_6 updates
java-1.7.-openjdk-devel.x86_64 :1.7.0.211-2.6.17.1.el7_6 updates
java-1.7.-openjdk-headless.x86_64 :1.7.0.211-2.6.17.1.el7_6 updates
java-1.7.-openjdk-javadoc.noarch :1.7.0.211-2.6.17.1.el7_6 updates
java-1.7.-openjdk-src.x86_64 :1.7.0.211-2.6.17.1.el7_6 updates
java-1.8.-openjdk.i686 :1.8.0.191.b12-.el7_6 updates # jdk8
java-1.8.-openjdk.x86_64 :1.8.0.201.b09-.el7_6 updates
java-1.8.-openjdk-accessibility.i686 :1.8.0.191.b12-.el7_6 updates
java-1.8.-openjdk-accessibility.x86_64 :1.8.0.201.b09-.el7_6 updates
java-1.8.-openjdk-accessibility-debug.i686 :1.8.0.191.b12-.el7_6 updates
java-1.8.-openjdk-accessibility-debug.x86_64 :1.8.0.201.b09-.el7_6 updates
java-1.8.-openjdk-debug.i686 :1.8.0.191.b12-.el7_6 updates
java-1.8.-openjdk-debug.x86_64 :1.8.0.201.b09-.el7_6 updates
java-1.8.-openjdk-demo.i686 :1.8.0.191.b12-.el7_6 updates
java-1.8.-openjdk-demo.x86_64 :1.8.0.201.b09-.el7_6 updates
java-1.8.-openjdk-demo-debug.i686 :1.8.0.191.b12-.el7_6 updates
java-1.8.-openjdk-demo-debug.x86_64 :1.8.0.201.b09-.el7_6 updates
java-1.8.-openjdk-devel.i686 :1.8.0.191.b12-.el7_6 updates
java-1.8.-openjdk-devel.x86_64 :1.8.0.201.b09-.el7_6 updates
java-1.8.-openjdk-devel-debug.i686 :1.8.0.191.b12-.el7_6 updates
java-1.8.-openjdk-devel-debug.x86_64 :1.8.0.201.b09-.el7_6 updates
java-1.8.-openjdk-headless.i686 :1.8.0.191.b12-.el7_6 updates
java-1.8.-openjdk-headless.x86_64 :1.8.0.201.b09-.el7_6 updates
java-1.8.-openjdk-headless-debug.i686 :1.8.0.191.b12-.el7_6 updates
java-1.8.-openjdk-headless-debug.x86_64 :1.8.0.201.b09-.el7_6 updates
java-1.8.-openjdk-javadoc.noarch :1.8.0.201.b09-.el7_6 updates
java-1.8.-openjdk-javadoc-debug.noarch :1.8.0.201.b09-.el7_6 updates
java-1.8.-openjdk-javadoc-zip.noarch :1.8.0.201.b09-.el7_6 updates
java-1.8.-openjdk-javadoc-zip-debug.noarch :1.8.0.201.b09-.el7_6 updates
java-1.8.-openjdk-src.i686 :1.8.0.191.b12-.el7_6 updates
java-1.8.-openjdk-src.x86_64 :1.8.0.201.b09-.el7_6 updates
java-1.8.-openjdk-src-debug.i686 :1.8.0.191.b12-.el7_6 updates
java-1.8.-openjdk-src-debug.x86_64 :1.8.0.201.b09-.el7_6 updates
java--openjdk.i686 :11.0.2.7-.el7_6 updates #jdk11
java--openjdk.x86_64 :11.0.2.7-.el7_6 updates
java--openjdk-debug.i686 :11.0.2.7-.el7_6 updates
java--openjdk-debug.x86_64 :11.0.2.7-.el7_6 updates
java--openjdk-demo.i686 :11.0.2.7-.el7_6 updates
java--openjdk-demo.x86_64 :11.0.2.7-.el7_6 updates
java--openjdk-demo-debug.i686 :11.0.2.7-.el7_6 updates
java--openjdk-demo-debug.x86_64 :11.0.2.7-.el7_6 updates
java--openjdk-devel.i686 :11.0.2.7-.el7_6 updates
java--openjdk-devel.x86_64 :11.0.2.7-.el7_6 updates
java--openjdk-devel-debug.i686 :11.0.2.7-.el7_6 updates
java--openjdk-devel-debug.x86_64 :11.0.2.7-.el7_6 updates
java--openjdk-headless.i686 :11.0.2.7-.el7_6 updates
java--openjdk-headless.x86_64 :11.0.2.7-.el7_6 updates
java--openjdk-headless-debug.i686 :11.0.2.7-.el7_6 updates
java--openjdk-headless-debug.x86_64 :11.0.2.7-.el7_6 updates
java--openjdk-javadoc.i686 :11.0.2.7-.el7_6 updates
java--openjdk-javadoc.x86_64 :11.0.2.7-.el7_6 updates
java--openjdk-javadoc-debug.i686 :11.0.2.7-.el7_6 updates
java--openjdk-javadoc-debug.x86_64 :11.0.2.7-.el7_6 updates
java--openjdk-javadoc-zip.i686 :11.0.2.7-.el7_6 updates
java--openjdk-javadoc-zip.x86_64 :11.0.2.7-.el7_6 updates
java--openjdk-javadoc-zip-debug.i686 :11.0.2.7-.el7_6 updates
java--openjdk-javadoc-zip-debug.x86_64 :11.0.2.7-.el7_6 updates
java--openjdk-jmods.i686 :11.0.2.7-.el7_6 updates
java--openjdk-jmods.x86_64 :11.0.2.7-.el7_6 updates
java--openjdk-jmods-debug.i686 :11.0.2.7-.el7_6 updates
java--openjdk-jmods-debug.x86_64 :11.0.2.7-.el7_6 updates
java--openjdk-src.i686 :11.0.2.7-.el7_6 updates
java--openjdk-src.x86_64 :11.0.2.7-.el7_6 updates
java--openjdk-src-debug.i686 :11.0.2.7-.el7_6 updates
java--openjdk-src-debug.x86_64 :11.0.2.7-.el7_6 updates
java-atk-wrapper.i686 0.30.-.el7 base
java-atk-wrapper.x86_64 0.30.-.el7 base
java_cup.noarch :.11a-.el7 base
java_cup-javadoc.noarch :.11a-.el7 base
java_cup-manual.noarch :.11a-.el7 base
javacc.noarch 5.0-.el7 base
javacc-demo.noarch 5.0-.el7 base
javacc-javadoc.noarch 5.0-.el7 base
javacc-manual.noarch 5.0-.el7 base
javacc-maven-plugin.noarch 2.6-.el7 base
javacc-maven-plugin-javadoc.noarch 2.6-.el7 base
javamail.noarch 1.4.-.el7 base
javamail-javadoc.noarch 1.4.-.el7 base
javapackages-tools.noarch 3.4.-.el7 base
javassist.noarch 3.16.-.el7 base
javassist-javadoc.noarch 3.16.-.el7 base
四、安装JDK
#安装java-1.8.-openjdk开头的所有程序,-y表示自动回复yes。直到控制台返回Complete或者完毕,表示安装成功。
$ sudo yum install -y java-1.8.-openjdk*
查看版本信息
$ sudo java -version
openjdk version "1.8.0_201"
OpenJDK Runtime Environment (build 1.8.0_201-b09)
OpenJDK -Bit Server VM (build 25.201-b09, mixed mode)
$ sudo javac -version
javac 1.8.0_201
五、查看JDK安装路径
已经通过yum安装好了jdk,那么安装到哪里去了呢?
查看方式一:
此时,如果使用javac,java都是可以的。我们还没有设置环境变量,为什么直接可使用了呢?
这就体现出了在线安装的好处了,它会自动配置环境变量。我们可以通过echo $PATH命令查看
#:为Linux系统中环境变量分隔符
$ sudo echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
如何查看jdk的安装路径,JAVA_HOME呢?
$ sudo whereis javac
# 很明显,/usr/bin/javac默认加入了PATH路径(/usr/bin)中
javac: /usr/bin/javac /usr/share/man/man1/javac.1.gz
# 可以使用ll命令(或ls -l)查看它链接的地址
$ sudo ll /usr/bin/javac
# 可以看到/usr/bin/javac指向的地址是/etc/alternatives/javac
lrwxrwxrwx. root root 3月 : /usr/bin/javac -> /etc/alternatives/javac
# 继续查看是否有链接
$ sudo ll /etc/alternatives/javac
# 可以看到/etc/alternatives/javac 指向/usr/lib/jvm/java-1.8.-openjdk-1.8.0.201.b09-.el7_6.x86_64/bin/javac
lrwxrwxrwx. root root 3月 : /etc/alternatives/javac -> /usr/lib/jvm/java-1.8.-openjdk-1.8.0.201.b09-.el7_6.x86_64/bin/javac
# 继续查看是否有链接
$ sudo ll /usr/lib/jvm/java-1.8.-openjdk-1.8.0.201.b09-.el7_6.x86_64/bin/javac
# 可以看到/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64/bin/javac为一个真实的地址,而非一个软链接
-rwxr-xr-x. root root 3月 : /usr/lib/jvm/java-1.8.-openjdk-1.8.0.201.b09-.el7_6.x86_64/bin/javac
所以JAVA_HOME就是/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64
查看方式二:
其实yum命令默认安装路径为/usr/lib/jvm,那么完整的安装路径是什么呢?
$ sudo ll /usr/lib/jvm
总用量
lrwxrwxrwx. root root 3月 : java -> /etc/alternatives/java_sdk
lrwxrwxrwx. root root 3月 : java-1.8. -> /etc/alternatives/java_sdk_1.8.0
lrwxrwxrwx. root root 3月 : java-1.8.-openjdk -> /etc/alternatives/java_sdk_1..0_openjdk
drwxr-xr-x. root root 3月 : java-1.8.-openjdk-1.8.0.201.b09-.el7_6.x86_64 #其他都是软链接,只有这个和下面一个是真实地址。下面那个是debug,当然这个就是jdk的安装路径了,也就是JAVA_HOME地址。
drwxr-xr-x. root root 3月 : java-1.8.-openjdk-1.8.0.201.b09-.el7_6.x86_64-debug
lrwxrwxrwx. root root 3月 : java-openjdk -> /etc/alternatives/java_sdk_openjdk
lrwxrwxrwx. root root 3月 : jre -> /etc/alternatives/jre
lrwxrwxrwx. root root 3月 : jre-1.8. -> /etc/alternatives/jre_1.8.0
lrwxrwxrwx. root root 3月 : jre-1.8.-openjdk -> /etc/alternatives/jre_1..0_openjdk
lrwxrwxrwx. root root 3月 : jre-1.8.-openjdk-1.8.0.201.b09-.el7_6.x86_64 -> java-1.8.-openjdk-1.8.0.201.b09-.el7_6.x86_64/jre
lrwxrwxrwx. root root 3月 : jre-1.8.-openjdk-1.8.0.201.b09-.el7_6.x86_64-debug -> java-1.8.-openjdk-1.8.0.201.b09-.el7_6.x86_64-debug/jre
lrwxrwxrwx. root root 3月 : jre-openjdk -> /etc/alternatives/jre_openjdk
六、设置环境变量
#设置JAVA_HOME指向jdk的安装路径
$ sudo vi /etc/profile
#在文件最后加入如下内容: # add java environment
export JAVA_HOME=/usr/lib/jvm/java-1.8.-openjdk-1.8.0.201.b09-.el7_6.x86_64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${JRE_HOME}:${CLASSPATH}:$PATH #修改/etc/profile之后让其生效
$ sudo source /etc/profile #查看JAVA_HOME路径
$ sudo echo $JAVA_HOME
/usr/lib/jvm/java-1.8.-openjdk-1.8.0.201.b09-.el7_6.x86_64
#查看JRE_HOME路径
$ sudo echo $JRE_HOME
/usr/lib/jvm/java-1.8.-openjdk-1.8.0.201.b09-.el7_6.x86_64/jre
#查看CLASSPATH路径
$ sudo echo $CLASSPATH
.:/usr/lib/jvm/java-1.8.-openjdk-1.8.0.201.b09-.el7_6.x86_64/lib:/usr/lib/jvm/java-1.8.-openjdk-1.8.0.201.b09-.el7_6.x86_64/jre/lib
#查看完整PATH路径
$ sudo echo $PATH
/usr/lib/jvm/java-1.8.-openjdk-1.8.0.201.b09-.el7_6.x86_64/bin:/usr/lib/jvm/java-1.8.-openjdk-1.8.0.201.b09-.el7_6.x86_64/jre:.:/usr/lib/jvm/java-1.8.-openjdk-1.8.0.201.b09-.el7_6.x86_64/lib:/usr/lib/jvm/java-1.8.-openjdk-1.8.0.201.b09-.el7_6.x86_64/jre/lib:/usr/lib/jvm/java-1.8.-openjdk-1.8.0.201.b09-.el7_6.x86_64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin