centOS安装Oracle JDK替换OpenJDK详解
主要内容:
在不卸载openJDK的情况下,centOS上解决oracle和openJDK的Java命令冲突的安装方法。以及openJDK为什么不能卸载?因为系统应用会依赖它。
1. 在centOS上安装JDK
1.1 快速步骤
centOS上按照以下步骤安装即可
第一步:到oracle官网下载tar包
第二步:解压tar包
[stefan@localhost 下载]$ sudo tar -zxvf jdk-8u91-linux-x64.tar.gz -C /opt/
第三步:配置环境变量
[stefan@localhost jdk1.8.0_91]$ sudo vim /etc/profile
在配置文件的最后添加几行,注意新的路径$JAVA_HOME/bin一定要放在老的路径$PATH前面:
# 自定义添加环境变量
export JAVA_HOME=/opt/jdk1.8.0_91
export PATH=$JAVA_HOME/bin:$PATH
第四步:生效
[stefan@localhost jdk1.8.0_91]$ source /etc/profile
查看java的版本
[stefan@localhost jdk1.8.0_91]$ java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
1.2 安装详解
第一步:检查现有JDK版本;下载tar包
一般装系统的时候会自动安装openJDK:
[stefan@localhost opt]$ java -version
openjdk version "1.8.0_65"
OpenJDK Runtime Environment (build 1.8.0_65-b17)
OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)
不需要删除这个版本,接下来安装的oracle的JDK的所有文件都在一个文件夹下,不会对系统rpm包安装的openJDK有影响,他们的安装位置不同。
以后使用开源软件,会有关联JDK路径的设置,关联相应版本的JDK就行,所以安装位置不同就不会冲突(详见RPM包安装软件的博文)。本文安装的方法,可以让系统环境的Oracle JDK替换OpenJDK。
为什么系统自带openJDK?
系统很多应用软件需要JDK环境,众所周知,由于Oracle公司的JDK的版权问题,大多数Linux发行版在安装时都会附带开源的无版权问题的OpenJDK,以支持某些java程序软件。但是如果我们在Linux下做一些java语言的开发,很可能还是需要安装和使用Oracle公司的原版JDK(以下简称“JDK”)。
为什么openJDK不能随便删除?
如果卸载删除系统自带的openjdk,安装它的依赖也会被删除,又会引起其它一些软件的依赖性问题,即如果卸载openjdk需要连同卸载其它所有依赖于openjdk的软件,例如OpenOffice/LibreOffice。这样子做是不可能滴。所以我们只能在不删除openjdk的情况下安装jdk。
Tips:系统自带的安装软件不要随意删除。
系统没有安装oracle的JDK,需要去oracle官网下载,选择.tar.gz的归档包。
第二步:解压tar包到安装目录
/opt/为大型软件的安装目录,/usr/local/为应用软件的安装目录,我的大数据软件一般都放在/opt/下
[stefan@localhost 下载]$ sudo tar -zxvf jdk-8u91-linux-x64.tar.gz -C /opt/
进入安装目录中
[stefan@localhost 下载]$ cd /opt/jdk1.8.0_91/
[stefan@localhost jdk1.8.0_91]$ ll
总用量 25912
drwxr-xr-x. 2 10 143 4096 4月 1 16:07 bin
-r--r--r--. 1 10 143 3244 4月 1 16:06 COPYRIGHT
drwxr-xr-x. 4 10 143 4096 4月 1 16:06 db
drwxr-xr-x. 3 10 143 4096 4月 1 16:06 include
-rwxr-xr-x. 1 10 143 5092228 4月 1 11:32 javafx-src.zip
drwxr-xr-x. 5 10 143 4096 4月 1 16:07 jre
drwxr-xr-x. 5 10 143 4096 4月 1 16:07 lib
-r--r--r--. 1 10 143 40 4月 1 16:06 LICENSE
drwxr-xr-x. 4 10 143 4096 4月 1 16:06 man
-r--r--r--. 1 10 143 159 4月 1 16:06 README.html
-rw-r--r--. 1 10 143 525 4月 1 16:06 release
-rw-r--r--. 1 10 143 21103627 4月 1 16:06 src.zip
-rwxr-xr-x. 1 10 143 110114 4月 1 11:32 THIRDPARTYLICENSEREADME-JAVAFX.txt
-r--r--r--. 1 10 143 177094 4月 1 16:06 THIRDPARTYLICENSEREADME.txt
jdk里有什么?
- \bin : 使用java的所有命令,比如javac、java
- \demo、\sample : java的例子
- \include : 放c语言程序,因为jdk有些用到c语言
- \jre : java运行时环境
- \lib : java运行时所需包文件
- src.zip : 放了一部分java源文件
第三步:设置环境变量
[stefan@localhost jdk1.8.0_91]$ sudo vim /etc/profile
在配置文件的最后添加几行,注意新的路径$JAVA_HOME/bin一定要放在老的路径$PATH前面:
# 自定义添加环境变量
export JAVA_HOME=/opt/jdk1.8.0_91
export PATH=$JAVA_HOME/bin:$PATH
这样做的效果可以查看PATH的值,显然oracleJDK的路径在最前面
[stefan@localhost jdk1.8.0_91]$ echo $PATH
/opt/jdk1.8.0_91/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/stefan/.local/bin:/home/stefan/bin:/opt/jdk1.8.0_91/bin:/opt/jdk1.8.0_91/bin:/opt/jdk1.8.0_91/bin
第四步:使配置生效
[stefan@localhost jdk1.8.0_91]$ source /etc/profile
查看java的版本
[stefan@localhost jdk1.8.0_91]$ java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
ok安装完成
1.3 $PATH在$JAVA_HOME/bin前面什么效果?
若第三步将$PATH在$JAVA_HOME/bin前
# 自定义添加环境变量
export JAVA_HOME=/opt/jdk1.8.0_91
export PATH=$PATH:$JAVA_HOME/bin
source生效配置文件以后,java的版本仍是openJDK,这是因为openJDK的安装路径为
[stefan@localhost jdk1.8.0_91]$ whereis java
java: /usr/bin/java /usr/lib/java /etc/java /usr/share/java /opt/jdk1.8.0_91/bin/java /usr/share/man/man1/java.1.gz
/usr/bin/java中的java命令会先被找到并执行,这里面安装的是openJDK;而/opt/jdk1.8.0_91/bin/java里的oracle版java将不会执行。