Install Oracle JDK 8 on Linux

Oracle Java is the proprietary, reference implementation for Java. This article shows you the way to manually install Oracle Java Development Kit 8 (Oracle JDK) on Linux.


Note: This article uses JDK8_Update_$java_update_no to demonstrate the installation. In the provided commands, replace the version specific paths and file names to your downloaded version.

Oracle stopped further updates to Java 8 since January 2019. A new article on how to install Oracle JDK 11 is available here: Install Oracle JDK 11 on Linux

Step 1:
Download the latest JDK(jdk-8u$java_update_no-linux-x64.tar.gz) from this official site.




If you want to download to a remote server or if you simply prefer wget, use the command given in this Stackoverflow answer: Downloading JDK

Step 2:
Open the terminal (Ctrl + Alt + T) and enter the following command.
sudo mkdir /usr/lib/jvm
If the /usr/lib/jvm folder does not exist, this command will create the directory. If you already have this folder, you can ignore this step and move to next step.

Step 3:
Enter the following command to change the directory.
cd /usr/lib/jvm

Step 4:
Extract the jdk-8u$java_update_no-linux-x64.tar.gz file in that directory using this command.
sudo tar -xvzf ~/Downloads/jdk-8u$java_update_no-linux-x64.tar.gz
According to this command, the JDK filename is jdk-8u$java_update_no-linux-x64.tar.gz and which is located in the ~/Downloads folder. If your downloaded file is in any other location, change the command according to your path.

Step 5:
Enter the following command to open the environment variables file.
sudo gedit /etc/environment

Step 6:
In the opened file, add the following bin folders to the existing PATH variable.
/usr/lib/jvm/$java_version/bin
/usr/lib/jvm/$java_version/db/bin
/usr/lib/jvm/$java_version/jre/bin
The PATH variables have to be separated by semicolon.
Notice that the installed JDK version is 1.8 update $java_update_no. Depending on your JDK version, the paths can be different.
Add the following environment variables at the end of the file.
J2SDKDIR="/usr/lib/jvm/$java_version"
J2REDIR="/usr/lib/jvm/$java_version/jre"
JAVA_HOME="/usr/lib/jvm/$java_version"
DERBY_HOME="/usr/lib/jvm/$java_version/db"

The environment file before the modification:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
The environment file after the modification:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/$java_version/bin:/usr/lib/jvm/$java_version/db/bin:/usr/lib/jvm/$java_version/jre/bin"
J2SDKDIR="/usr/lib/jvm/$java_version"
J2REDIR="/usr/lib/jvm/$java_version/jre"
JAVA_HOME="/usr/lib/jvm/$java_version"
DERBY_HOME="/usr/lib/jvm/$java_version/db"

Save the changes and close the gedit.

Step 7:
Enter the following commands to inform the system about the Java's location. Depending on your JDK version, the paths can be different.
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/$java_version/bin/java" 0
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/$java_version/bin/javac" 0
sudo update-alternatives --set java /usr/lib/jvm/$java_version/bin/java
sudo update-alternatives --set javac /usr/lib/jvm/$java_version/bin/javac

Step 8:
To verify the setup enter the following commands and make sure that they print the location of java and javac as you have provided in the previous step.
update-alternatives --list java
update-alternatives --list javac

Step 9:
Restart the computer (or just log-out and login) and open the terminal again.

Step 10:
Enter the following command.
java -version

If you get the installed Java version as the output, you have successfully installed the Oracle JDK in your system.
Previous
Next Post »

11 comments

Write comments
wizard_romania
AUTHOR
September 16, 2016 at 3:53 PM delete

Not a bad idea to also update default-java sym link:

sudo ln -sfn /usr/lib/jvm/jdk1.8.0_102/ /usr/lib/jvm/default-java

Reply
avatar
زياد هاني
AUTHOR
September 5, 2017 at 7:32 PM delete

Thanks

Reply
avatar
Muhammad Naeem
AUTHOR
May 9, 2019 at 2:57 PM delete

Great article. Thanks

Reply
avatar
ian cikal
AUTHOR
June 2, 2019 at 5:55 AM delete

Work on a first shoot, thanks..

Reply
avatar
RICARDO MENDEZ
AUTHOR
August 10, 2019 at 5:58 AM delete

This was very useful for me. Thank..

Reply
avatar
Nick00255
AUTHOR
August 18, 2019 at 7:52 PM delete

Thanks a lot, very useful.!!!!!!!!

Reply
avatar
Luiz Fellype Cassago de Souza
AUTHOR
August 22, 2019 at 8:53 PM delete

My environment file, had nothing in it.
The PATH variable was not there.

Reply
avatar
Gobinath
AUTHOR
August 23, 2019 at 5:24 AM delete

You can add the path to the environment. However to be on the safe side, I'd recommend you to add the following to ~/.bash_profile:



export PATH=$PATH:/usr/lib/jvm/jdk1.8.0_201/bin:/usr/lib/jvm/jdk1.8.0_201/db/bin:/usr/lib/jvm/jdk1.8.0_201/jre/bin
export J2SDKDIR=/usr/lib/jvm/jdk1.8.0_201
export J2REDIR=/usr/lib/jvm/jdk1.8.0_201/jre
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_201

Reply
avatar
Luiz Fellype Cassago de Souza
AUTHOR
August 29, 2019 at 3:43 AM delete

Can I just execute
sudo tar xvzf ~/Downloads/jdk-8u201-linux-x64.tar.gz

so, if I type just in home instead of /user/...
java -version
I got the response like it was installed.
is that a problem?

Reply
avatar
Gobinath
AUTHOR
August 29, 2019 at 5:29 AM delete

It's not a problem as long as you use it only to execute .java files. Some Java applications require JAVA_HOME and PATH. So if you set JAVA_HOME and PATH pointing to the current extracted folder then you can use Java from anywhere as the current user.


I recommend to extract it in /usr/lib/jvm because its the standard folder and it can be accessed by any users (including root).

Reply
avatar
Matthew
AUTHOR
September 25, 2019 at 11:49 PM delete

This is what I had been looking for. I got how to get the tar.gz file from oracle and unpack it in the proper directory from reading Oracle's instructions, but I needed to see steps 6 and 7 about setting up the environment to install jdk 8 in a usable form. Thanks for taking the time to share this, it helped me a lot.

Reply
avatar

Contact Form

Name

Email *

Message *