Install JDK 7 on Ubuntu

Install JDK 7 on Ubuntu

Install JDK 7 on Ubuntu

Task: Install JDK 7 on Ubuntu desktop.
Problem 1: Java version 7 is not available from Ubuntu repositories for your Ubuntu version (prior to 11.10 Oneiric). You don’t see it neither via "Ubuntu Software Center" nor via "Synaptic Package Manager".
What to do: Download JDK 7 binaries from the official Java site.
Problem 2: You are Debian/Ubuntu user and don’t see applicable .deb package.
What to do: Again, download JDK 7 binaries from the official Java site, install and configure it manually.
Step by step instructions to install and manual configure JDK 7 on the Ubuntu 10.04 LTS (the Lucid Lynx) desktop follow:
- For my X64 Ubuntu 10.04 LTS Desktop installation I downloaded Linux x64 – Compressed Binary file named jdk-7-linux-x64.tar.gz.
- Unpack it with command
gzip -d jdk-7-linux-x64.tar.gz
You will get jdk-7-linux-x64.tar file.
- Extract files from tar archive with command
tar -xvf jdk-7-linux-x64.tar
JDK 7 package is extracted into ./jdk1.7.0 directory.
- Move JDK 7 directory to place where it should be. Right, to the /usr/lib/jvm/jdk1.7.0 directory. Use this command for that
sudo mv ./jdk1.7.0/ /usr/lib/jvm/jdk1.7.0
- Execute this command
sudo update-alternatives --config java
to know under what number you will config you new Java installation. You will get output as:

$sudo update-alternatives –config java
There are 2 choices for the alternative java (providing /usr/bin/java).

Selection Path Priority Status
————————————————————
* 0 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 auto mode
1 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 manual mode
2 /usr/lib/jvm/java-6-sun/jre/bin/java 63 manual mode

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

Remember the last number and press enter to exit this utility.
- Execute this command
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0/jre/bin/java 3
to add your new JDK 7 installation into alternatives list. I put 3 there as 2 was last number for my configuration. You should use your own number from the previous step increased by 1.
- Execute this command
sudo update-alternatives --config java.
You will see output similar one below:

$sudo update-alternatives –config java
There are 3 choices for the alternative java (providing /usr/bin/java).

Selection Path Priority Status
————————————————————
* 0 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 auto mode
1 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 manual mode
2 /usr/lib/jvm/java-6-sun/jre/bin/java 63 manual mode
3 /usr/lib/jvm/jdk1.7.0/jre/bin/java 3 manual mode

Press enter to keep the current choice[*], or type selection number: 3
update-alternatives: using /usr/lib/jvm/jdk1.7.0/jre/bin/java to provide /usr/bin/java (java) in manual mode.

In case you have other answer from update-alternatives --config java command, e.g. ‘no alternatives for java’, try this command:

sudo update-alternatives –install /usr/bin/java java /usr/lib/jvm/jdk1.7.0/jre/bin/java 0

This will select needed java version in case you had not any previous java version installed before.

The job is done. Task is completed and work is finished. Just check version of your new JDK 7 installation typing this command java -version. You should see something like this:

~$ java -version
java version “1.7.0″
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)

Please be aware that we changed alias just for one java binary only – “java” itself. There are a lot of others in Java package, e.g. “javac” compiler, etc. If you try to check javac version with “javac -version” command the most probably you will get that it still has 1.6 version, e.g. on my box:

~$ javac -version
javac 1.6.0_26

To update it, make the same as you did for java runtime environment:
sudo update-alternatives –config javac // Check the java compilers you have
sudo update-alternatives –install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0/bin/javac [-number]
Pay attention on the change of file location at the end of command. It is needed as there’s NO “javac” in the directory
“/usr/lib/jvm/jdk1.7.0/jre/bin/”
we used for JRE configuration in previous command.
Apply this technique for other Java binaries you use.

Thanks to Nikolavp’s blog for the hints about manual JDK 7 installation and configuration.

Tags: JDK, Ubuntu

  • http://shinephp.com Vladimir Garagulya

    Hi,

    I voted for it and left a comment to support this RFE. And you, guys? 
    What do you think about probability of successful development of native Debian/Ubuntu installer for Oracle Java JDK by Oracle?

  • Ovidiu-Florin Bogdan

    on Ubuntu 11.10, you already have it in the repository: openjdk-7-jdk openjdk-7-jre

  • Asdrúbal Iván Suárez Rivera

    Wow!! Thank you! This helped me :)

  • Guest

    Ubuntu has the special mechanism of update-java-alternatives  Based on the files /usr/lib/jvm/.XXXX.jinfo

    Therefore I found  
    http://hostcode.sourceforge.net/view/367 
    that generates this file and sets all update-alternatives –install /usr/……

    you have to set
    JDK_ALIAS=jdk1.7.0_01
    JDK_ALTERNATIVE_PRORITY=3
    as described in this document and afterwards java, javac, …. sets to jdk1.7.0_01

  • http://shinephp.com Vladimir Garagulya

    Oh, it’s interesting! Thanks for sharing this useful information. I will definitely investigate this feature for future use.

  • rjw

    I did all that and get the following error:
    ubuntu@ubuntu:/usr/lib/jvm/jdk1.7.0_01/jre/bin$ sudo update-alternatives –config javaThere are 2 choices for the alternative java (providing /usr/bin/java).  Selection    Path                                      Priority   Status————————————————————  0            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      auto mode* 1            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode  2            /usr/lib/jvm/jdk1.7.0_01/jre/bin/java      3         manual modePress enter to keep the current choice[*], or type selection number: 2update-alternatives: using /usr/lib/jvm/jdk1.7.0_01/jre/bin/java to provide /usr/bin/java (java) in manual mode.ubuntu@ubuntu:/usr/lib/jvm/jdk1.7.0_01/jre/bin$ java -version-bash: /usr/bin/java: No such file or directory

    I don’t understand why this comes up… as /usr/bin/java exists when I look it up! Can anybody help me?

  • http://shinephp.com Vladimir Garagulya

    /usr/bin/java is a symbolic link to /etc/alternatives/java
    Look in /etc/alternatives/java file using 
    $view /etc/alternatives/java
    command and check 1st line. I have 
    … symbolic link to `/usr/lib/jvm/jdk1.7.0/jre/bin/java’ 
    there. Error message that file or directory doesn’t exist is concerned to this file or directory, not /usr/bin/java, so re-check if all is OK with path, you  see in this line.

  • Arunkumar Jeyapal

    Thank you very much

  • Kubuntu

    Thank you!

  • Manoharan S

    Thanks a lot!!

  • lostanew

    I have already installed java-6-openjdk, java-7-openjdk-amd64, and now jdk1.7.0. I also noted that I have two files in my download folder: jdk-7-linux-x64.tar.gz and jdk-7u2-linux-x64.tar.gz. (I tried a few things before getting to this website). So maybe I installed jdk-7 twice now. lol

  • http://shinephp.com Vladimir Garagulya

    That’s not a problem, more work – more experience and knowledge :) . Just be sure that you use the latest Java release.

  • Edf

    doesn’t work

  • Rafael

    works fine but i would like to have a more direct way to change all the aliases than to change them one by one…
    there is a way of defining a file /usr/lib/.jdk1.7.0.jinfo (copied for example to the one generated by java-6-openjdk) but when i try “sudo update-java-alternatives -s jdk1.7.0″ it doesn’t want to work !
    Any idea ?

  • cocoandco

    Hi, I’ve done all the steps and finally when I run : java -version I have fichier binaire impossible à lancer, any idea ?

  • http://shinephp.com Vladimir Garagulya

    Check if you have this file /etc/alternatives/java 
    Try to execute java with full path
    /usr/lib/jvm/jdk1.7.0/jre/bin/java
    If you get same error message, check if your java file has ‘eXecution’ permission.

  • Amritasah89

    really gr88… thanks alot… :) :)

  • Douglas

    Thanks. It worked fine but when I right click to open a .jar (namely Minecraft) I don’t have an option to use 7. The only option is still ‘Open JDK Java 6 Runtime’. I’m guessing there is something more I need to do.