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
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.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:
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.
28 comments
Write commentsNot a bad idea to also update default-java sym link:
Replysudo ln -sfn /usr/lib/jvm/jdk1.8.0_102/ /usr/lib/jvm/default-java
Thanks
ReplyGreat article. Thanks
ReplyWork on a first shoot, thanks..
ReplyThis was very useful for me. Thank..
ReplyThanks a lot, very useful.!!!!!!!!
ReplyMy environment file, had nothing in it.
ReplyThe PATH variable was not there.
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:
Replyexport 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
Can I just execute
Replysudo 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?
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.
ReplyI recommend to extract it in /usr/lib/jvm because its the standard folder and it can be accessed by any users (including root).
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.
Replysudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0_202/bin/java" 0
Replyupdate-alternatives: error: alternative path is not absolute as it should be: usr/lib/jvm/jdk1.8.0_202/bin/java
Best method https://media3.giphy.com/media/TdfyKrN7HGTIY/giphy.gif
Replyhey what happened between step 4 and 5 , unzip on Download then nothing ? how can we get to /bin ?
ReplyHi,
ReplyThe tar file contains the folder hierarchy including jdk1.8.0_231/bin
How do I uninstall it?
ReplyThanks and regards
1. Delete the alternatives using:
Replysudo update-alternatives --remove "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0_231/bin/java" 0
sudo update-alternatives --remove "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0_231/bin/java" 0
2. Revert the /etc/environmnet file
3. Delete the /usr/lib/jvm/jdk1.8.0_231 folder
sudo rm -rf /usr/lib/jvm/jdk1.8.0_231
one problem I encountered was that my linux didn't have 32 bit backward compatibility package to install it, so I had to install the 32 bit package installer separately before installing it:
Replysudo apt-get install libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386
Hi
ReplyI am trying to install Java version 8 using your guideline. The problem is I'm using MacOS version Catalina which does not allow writing to the root directory, so when I run
sudo mkdir /usr/lib/jvm
it gives me the error message:
mkdir: /usr/lib/jvm: Read-only file system
How can I fix this issue?
Thank You, Great Help.
Replyhey im stuck on step 4. when i try to install it it says no such file or directory found and i cant install it
ReplySteps 4 assumes that the downloaded file is in Downloads folder. Please change the path to the downloaded file location.
ReplyThanks
ReplyThanks
ReplyHi! I got stuck on step 7, it says the javac alternative is not registered, I installed the same version and followed all steps, what could be the issue?
ReplyDid you have any other versions of Java installed earlier? Can you run this command to delete the existing `/usr/bin/javac` and then try again.
Replysudo rm -rf /usr/bin/javac
Please let me know if this helps.
I get an error message "bash: /usr/bin/java: can't find file or directory" although i implement all instructions here. What can i do to resolve this issue?
ReplyI also get the "bash: /usr/bin/java: can't find file or directory" error how would I go about fixing this?
ReplyEmoticonEmoticon