[Updated for jdk-10.0.1]
This is for 64-bit installation.
- Download JDK from Oracle site
http://www.oracle.com/technetwork/java/javase/downloads
The installation file I use isjdk-10.0.1_linux-x64_bin.tar.gz
. - Change directory to install the JDK code in
/opt
cd /opt
- extract the JDK files
sudo tar -xvzf <location of downloaded JDK>/jdk-10.0.1_linux-x64_bin.tar.gz
This will put the JDK into the newly created directory named
jdk-10.0.1
- Update environment variables to point to the newly installed JDK by editing the
/etc/environment
file.sudo nano /etc/environment
Add the
JAVA_HOME
variable, and add JDK bin to thePATH
variable.JAVA_HOME="/opt/jdk-10.0.1" PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/jdk-10.0.1/bin"
- Refresh the environment variable.
source /etc/environment
- Verify that the updated environment variables are in place and the path to the JDK is valid
$ echo $JAVA_HOME /opt/jdk-10.0.1 $ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/jdk-10.0.1/bin
- Update Java alternative list. You want to set a higher priority for the new JDK. On my system this is the result when I query the alternatives:
$ update-alternatives --verbose --query java Name: java Link: /usr/bin/java Slaves: java.1.gz /usr/share/man/man1/java.1.gz Status: auto Best: /usr/lib/jvm/java-9-openjdk-amd64/bin/java Value: /usr/lib/jvm/java-9-openjdk-amd64/bin/java Alternative: /usr/lib/jvm/java-9-openjdk-amd64/bin/java Priority: 1091 Slaves: java.1.gz /usr/lib/jvm/java-9-openjdk-amd64/man/man1/java.1.gz
So, let’s make the new JDK our default…
sudo update-alternatives --install /usr/bin/java java /opt/jdk-10.0.1/bin/java 10001
The response is:
update-alternatives: using /opt/jdk-10.0.1/bin/java to provide /usr/bin/java (java) in auto mode.
Now, when you type
java -version
, you will seejava version "1.0.1" 2018-04-17 Java(TM) SE Runtime Environment 18.3 (build 1.0.0.1+10) Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)
-
Likewise, set the new Java compiler as default with
$ sudo update-alternatives --install /usr/bin/javac javac /opt/jdk-10.0.1/bin/javac 10001 update-alternatives: using /opt/jdk-10.0.1/bin/java to provide /usr/bin/javac (javac) in auto mode $ javac -version java version "10.0.1" 2018-04-17 Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10) Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)
- If you wish, you can remove the link to the older java alternative
$ sudo update-alternatives --verbose --remove java /usr/lib/jvm/java-9-openjdk-amd64/bin/java update-alternatives: discarding obsolete slave link java.1.gz (/usr/share/man/man1/java.1.gz) $ update-alternatives --verbose --query java Name: java Link: /usr/bin/java Status: auto Best: /opt/jdk-10.0.1/bin/java Value: /opt/jdk-10.0.1/bin/java Alternative: /opt/jdk-10.0.1/bin/java Priority: 10001
- In the similar way, remove the old javac alternative link.
$ update-alternatives --verbose --query javac Name: javac Link: /usr/bin/javac Slaves: javac.1.gz /usr/share/man/man1/javac.1.gz Status: auto Best: /opt/jdk-10.0.1/bin/java Value: /opt/jdk-10.0.1/bin/java Alternative: /opt/jdk-10.0.1/bin/java Priority: 10001 Slaves: Alternative: /usr/lib/jvm/java-9-openjdk-amd64/bin/javac Priority: 1091 Slaves: javac.1.gz /usr/lib/jvm/java-9-openjdk-amd64/man/man1/javac.1.gz $ sudo update-alternatives --remove javac /usr/lib/jvm/java-9-openjdk-amd64/bin/javac