Install Oracle Java JDK 8 On CentOS 7/6.5/6.4

This tutorial describes how to install and configure latest Oracle Java JDK on CentOS 7, 6.5, and 6.4 servers. Although, the steps should work on other RPM based distributions such as RHEL 7, 6.x, Scientific Linux 6.x, and Fedora too.

First of all, update your server.

yum update

Then, search for if any older JDK versions are installed in your system.

rpm -qa | grep -E '^open[jre|jdk]|j[re|dk]'

Sample output:

gobject-introspection-1.36.0-4.el7.x86_64
pygobject3-base-3.8.2-4.el7.x86_64

To check the already installed Java version, enter the following command:

java -version

If Java 1.6 or 1.7 have been installed already, you can uninstall them using the following commands.

yum remove java-1.6.0-openjdk
yum remove java-1.7.0-openjdk

Download And Install Oracle Java JDK

At the time of writing this tutorial, the latest Java JDK version was JDK 8u25. First, let us download the latest Java version.

Go to the Oracle Java download page and download the required version depending upon your distribution architecture.

As I use 64bit CentOS 7 server, I have downloaded the 64bit rpm package.

Then, go to the directory where you’ve downloaded the jdk package, and run the following command to install it.

rpm -ivh jdk-8u25-linux-x64.rpm

Sample output:

Preparing...                          ################################# [100%]
Updating / installing...
   1:jdk1.8.0_25-2000:1.8.0_25-fcs    ################################# [100%]
Unpacking JAR files...
    rt.jar...
    jsse.jar...
    charsets.jar...
    tools.jar...
    localedata.jar...
    jfxrt.jar...

Check Java version

Now, check for the installed JDK version in your system using command:

java -version

Sample output:

java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

As you see above, latest java 1.8 has been installed.

Setup Global Environment Variables

We can easily set the environment variables using the export command as shown below.

export JAVA_HOME=/usr/java/jdk1.8.0_25/
export PATH=$PATH:$JAVA_HOME

Now, let us check for the environment variables using commands:

echo $JAVA_HOME

Sample output:

/usr/java/jdk1.8.0_25/

Or

echo $PATH

Sample output:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/java/jdk1.8.0_25/

However, the above method is not recommended. Because, the path will be disappeared when the system reboots. To make it permanent, you have to add the paths in the system wide profile.

To do that, create a file called java.sh under /etc/profile.d/ directory.

vi /etc/profile.d/java.sh

Add the following lines:

#!/bin/bash
JAVA_HOME=/usr/java/jdk1.8.0_25/
PATH=$JAVA_HOME/bin:$PATH
export PATH JAVA_HOME
export CLASSPATH=.

Save and close the file. Make it executable using command:

chmod +x /etc/profile.d/java.sh

Then, set the environment variables permanently by running the following command:

source /etc/profile.d/java.sh

That’s it.

What if I didn’t remove the old JDK versions from my system?

As I mentioned before, make sure you have removed all old JDK versions from your system. If you didn’t remove the older versions from your server before installing latest JDK version, you should tell your system from where java should be executed.

By default, the JDK 1.8.x will be installed in /usr/java/jdk1.8.0_25/ location. In order to tell our system, from where java should be executed, we need to run the following commands one by one.

alternatives --install /usr/bin/java java /usr/java/jdk1.8.0_25/jre/bin/java 20000
alternatives --install /usr/bin/jar jar /usr/java/jdk1.8.0_25/bin/jar 20000
alternatives --install /usr/bin/javac javac /usr/java/jdk1.8.0_25/bin/javac 20000
alternatives --install /usr/bin/javaws javaws /usr/java/jdk1.8.0_25/jre/bin/javaws 20000
alternatives --set java /usr/java/jdk1.8.0_25/jre/bin/java
alternatives --set jar /usr/java/jdk1.8.0_25/bin/jar
alternatives --set javac /usr/java/jdk1.8.0_25/bin/javac 
alternatives --set javaws /usr/java/jdk1.8.0_25/jre/bin/javaws

All done. Let us check the alternatives.

ls -lA /etc/alternatives/

Sample output:

lrwxrwxrwx. 1 root root 29 Dec  2 16:24 jar -> /usr/java/jdk1.8.0_25/bin/jar
lrwxrwxrwx. 1 root root 34 Dec  2 16:24 java -> /usr/java/jdk1.8.0_25/jre/bin/java
lrwxrwxrwx. 1 root root 31 Dec  2 16:24 javac -> /usr/java/jdk1.8.0_25/bin/javac
lrwxrwxrwx. 1 root root 36 Dec  2 16:24 javaws -> /usr/java/jdk1.8.0_25/jre/bin/javaws
[...]

That’s it. Now check for the java version using command:

java -version

Sample output:

java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

Cheers!