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将不会执行。

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器