Ubuntu: change the path from OpenJDK 6 to Oracle JDK 7
Asked Answered
P

5

23

After downloading the latest .tar file I ran tar zxvf jdk-7u45-linux-x64.tar.gz to extract java files.

Set the path in .bashrc file (vi ~/.bashrc) as below;

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_45/bin/java
export PATH=$PATH:/usr/lib/jvm/jdk1.7.0_45/bin
export JDK_HOME=/usr/lib/jvm/jdk1.7.0_45    
export JRE_HOME=/usr/lib/jvm/jre1.7.0_45

Now, running command java -version or which java, java PATH still pointing to the older java version (java version "1.6.0_27").

I know default ubuntu takes OpenJDK path. I have to change the path as latest version as my system environment variable set in .bashrc file.

Also, sudo update-alternatives --config java

Selection    Path                                      Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-7-oracle/jre/bin/java    1062      auto mode
  1            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-7-oracle/jre/bin/java    1062      manual mode
* 3            /usr/lib/jvm/jdk1.7.0_45/bin/java          1         manual mode
Press enter to keep the current choice[*], or type selection number: 3
Paba answered 14/1, 2014 at 13:47 Comment(0)
H
38

Ubuntu (and Debian) have an elegant way to manage libraries like the jdk.

Using update-alternatives you can manage multiple jdk libraries on the same system, choosing which one you want to use as the main one.

First you have to install an alternative for the new installed jdk:

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.7.0_45/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.7.0_45/bin/javac" 1

In this way you install the new jdk as an alternative to the original one. Then you can choose which one you wan to use:

sudo update-alternatives --config java
sudo update-alternatives --config javac

You will be asked to choose which jdk you want to use, on my system I have:

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                           Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java   1061      auto mode
  1            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java   1061      manual mode
* 2            /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java   1051      manual mode

Press enter to keep the current choice[*], or type selection number: 

At any time you can see what alternatives you have for java or javac using the --list option:

sudo update-alternatives --list java
sudo update-alternatives --list javac

To see more options check the update-alternatives man page.

Harbin answered 14/1, 2014 at 13:50 Comment(5)
while running sudo update-alternatives --install "/usr/bin/javac" "java" "/usr/lib/jvm/jdk1.7.0_45/bin/java" 1 update-alternatives: error: alternative link /usr/bin/javac is already managed by javac.Paba
@DevendraSingh you have a typo: dont confuse javac with java you have "/usr/bin/javac" pointing to "/usr/lib/jvm/jdk1.7.0_45/bin/java"Harbin
I still unable to change the path.Paba
Post, in your question, the output of update--alternatives --list javaHarbin
This doesnt seem to be working I get "/usr/bin/java no such file or directory" after doing this. Pls helpConrado
M
9

You probably want to do

export PATH=/usr/lib/jvm/jdk1.7.0_45/bin:$PATH

OpenJDK is probably still in the path, and Linux will use the first java it finds.

If you don't need it, I would recommend uninstalling OpenJDK.

Mccall answered 14/1, 2014 at 13:49 Comment(0)
M
9

Run

sudo  update-java-alternatives --list

to list off all the Java installations on a machine by name and directory, and then run

sudo  update-java-alternatives --set [JDK/JRE name e.g. java-8-oracle]

to choose which JRE/JDK to use.

If you want to use different JDKs/JREs for each Java task, you can run update-alternatives to configure one java executable at a time; you can run

sudo  update-alternatives --config java[Tab]

to see the Java commands that can be configured (java, javac, javah, javaws, etc). And then

sudo  update-alternatives --config [javac|java|javadoc|etc.]

will associate that Java task/command to a particular JDK/JRE.

You may also need to set JAVA_HOME for some applications: from this answer you can use

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

for JREs, or

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")

for JDKs.

Martyrology answered 10/2, 2016 at 1:30 Comment(0)
R
6

Try typing the following in your terminal.

sudo update-alternatives --config java

The output will be some choices and you can select the correct one which installed to your computer.

Rhyne answered 25/8, 2014 at 14:0 Comment(0)
B
5

Running command in terminal:

sudo update-alternatives --config java 

from the command line to set the version of the JRE you want to use as like available version install of java : 1.6 and 1.8
See below :

enter image description here

and choose 1 option and set java-6 version because already current choice set in java-8.

Brodeur answered 27/3, 2016 at 20:19 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.