I have been using Java 6 on Ubuntu 11.10, but now I want to update to version 7. I've installed version 7 via PPA as described here. If I run
sudo update-alternatives --config javaI get the following output:
There are 2 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status
------------------------------------------------------------ 0 /usr/lib/jvm/java-7-oracle/jre/bin/java 64 auto mode 1 /usr/lib/jvm/java-6-sun/jre/bin/java 63 manual mode
* 2 /usr/lib/jvm/java-7-oracle/jre/bin/java 64 manual modeSimilarly, if I run:
sudo update-alternatives --config javacI get the output:
Selection Path Priority Status
------------------------------------------------------------ 0 /usr/lib/jvm/java-7-oracle/bin/javac 64 auto mode 1 /usr/lib/jvm/java-6-sun/bin/javac 63 manual mode
* 2 /usr/lib/jvm/java-7-oracle/bin/javac 64 manual modeSo it looks like version 7 is already the default. But if I run either
java -versionor
javac -versionThe output indicates that version 6 is still the default. How can I set the default to version 7?
46 Answers
As per this answer: How to set default Java version?
Try providing the explicit path along with update-alternatives --install first, and then run update-alternatives to make your selection:
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/java-7-oracle/jre/bin/java" 1
sudo update-alternatives --config java
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/java-7-oracle/bin/javac" 1
sudo update-alternatives --config javac You need to set javac too.
sudo update-alternatives --config javac I had the same problem. I had sun jdk6 installed. After
sudo update-alternatives --config java sudo update-alternatives --config javac sudo update-alternatives --config javawsa restart was necessary for me. Than it worked.
Edit: I realized it was not enough to do the steps above.
I also had to edit the environment variable:
sudo nano /etc/environmentAnd add (a different java version will require a different string) :
JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64" insert the number that identifies the path you want and press enter. in this case insert 1.
finally, try to test the version java -version
I guess your java binary is pointing to somewhere other than /etc/alternatives/java.
Check the output of: type java
Does it say /usr/bin/java? If so, then check if that points correctly to alternatives:
ls -l /usr/bin/java should show it pointing to /etc/alternatives/java.
Lastly confirm that /etc/alternatives/java itself is pointing to java-7:ls -l /etc/alternatives/java.
The update-alternatives command only adjusts the last one and assumes that default points to /usr/bin/java which in turn is correctly linked to /etc/alternatives/java.
I tried nearly every methods listed above, but still found java -version print the wrong version while ls -al /etc/alternatives/java already pointed to the right one.
So I run: which java and found that the result shows that I was using java from /usr/local/jdk_xxx/bin/java, then I deleted this folder and restarted the terminal. Now the java works well.
Hope it will help others.