Warning – Java 7 is officially deprecated by Oracle team. It is no more available for download on the public network. The Oracle team recommends upgrading to Java 8 or Java 9. You can follow below tutorials to install accordingly.
Advertisement

During installation of Java using rpm files, I faced issues many times. After that, I found a better way to install java from Sun site. Using below steps I have installed java successfully many times without facing any issues. We can also install multiple version of java easily if required. Oracle has also released Java 8. To install it read article

Use following step by step instructions to install or update Java. I recommend reading carefully instruction for downloading Java from Linux command line.

Downloading Latest Java Archive

Java latest archive is available on its official site. We recommend to download latest version of Java from Oracle official website. After completing download also extract archive with given commands.

For 64 Bit:-

# cd /opt/
# wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz"

# tar xzf jdk-7u79-linux-x64.tar.gz

For 32 Bit:-

# cd /opt/
# wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-i586.tar.gz"

# tar xzf jdk-7u79-linux-i586.tar.gz

Note: If Above wget command doesn’t not work for you watch this example video to download java source archive using terminal.

Use archive file as per your system configuration. For this example we are using CentOS 7.0 (64 bit) system.

Install Java with Alternatives

After extracting Java archive file, we just need to set up to use newer version of Java using alternatives. Use the following commands to do it.

# cd /opt/jdk1.7.0_79/
# alternatives --install /usr/bin/java java /opt/jdk1.7.0_79/bin/java 2
# alternatives --config java
There are 3 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*  1           /opt/jdk1.7.0_60/bin/java
 + 2           /opt/jdk1.7.0_72/bin/java
   3           /opt/jdk1.7.0_79/bin/java

Enter to keep the current selection[+], or type selection number: 3 [Press Enter]

Now you may also required to set up javac and jar commands path using alternatives command.

# alternatives --install /usr/bin/jar jar /opt/jdk1.7.0_79/bin/jar 2
# alternatives --install /usr/bin/javac javac /opt/jdk1.7.0_79/bin/javac 2
# alternatives --set jar /opt/jdk1.7.0_79/bin/jar
# alternatives --set javac /opt/jdk1.7.0_79/bin/javac
Check Installed Java Version

Use following command to check which version of Java is currently being used by system.

# java -version

java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

Configuring Environment Variables

Most of Java based application’s uses environment variables to work. Use following commands to set up these variable properly. It’s also good to add following commands to any start-up script like ~/.bashrc or ~/.bash_profile.

  • Setup JAVA_HOME Variable
# export JAVA_HOME=/opt/jdk1.7.0_79
  • Setup JRE_HOME Variable
  • # export JRE_HOME=/opt/jdk1.7.0_79/jre
    
  • Setup PATH Variable
  • # export PATH=$PATH:/opt/jdk1.7.0_79/bin:/opt/jdk1.7.0_79/jre/bin
    

    I hope above steps will help you for installing Java on your Linux system. You can follow above steps to install multiple version of Java as same time but you can use only one version at a time.

    Share.

    86 Comments

    1. very neatly written tutorial….probably you can add the java path ,bins to profile file so that u get it working for other user/evrey time u login
      ex:
      root@sandlwoodtree:~# tail -3 /etc/profile
      export JAVA_HOME=/opt/jdk1.7.0_79
      export JRE_HOME=/opt/jdk1.7.0_79/jre
      export PATH=$PATH:/opt/jdk1.7.0_79/bin:/opt/jdk1.7.0_79/jre/bin
      root@sandlwoodtree:~#

      thanks for posting this…It helped me. 🙂

    2. I had old java6 installed:

      # java -version
      java version “1.6.0_41”
      Java(TM) SE Runtime Environment (build 1.6.0_41-b02)
      Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01, mixed mode)

      so I’ve installed java7 as mentioned above, and:
      [root@eng-57-sp3 ~]# alternatives –config java

      There are 2 programs which provide ‘java’.

      Selection Command
      ———————————————–
      * 1 /usr/java/default/java
      + 2 /opt/jdk1.7.0_75/bin/java

      Enter to keep the current selection[+], or type selection number:

      however java -version still claims (even after reboot):
      # java -version
      java version “1.6.0_41”
      Java(TM) SE Runtime Environment (build 1.6.0_41-b02)
      Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01, mixed mode)

      what is wrong?

    3. Hello !!!

      New on Redhat….

      My problem is that I can’t get this command “java -version” to work after installation according to description above…

      I got a nice download done, but install failed somewhere here at the end of commands…:

      I have this release of Redhat:

      [root@docutv etc]# cat redhat-release
      Red Hat Enterprise Linux Server release 6.6 (Santiago)

      or maybe even bettwer like this

      [root@docutv /]# yum version
      Loaded plugins: product-id, refresh-packagekit, subscription-manager
      Installed: 6Server/ppc64 1226:3a2b2ccb8c91fdd603df3f3ea4aedb6a7a0f8a91
      Group-Installed: yum 15:22a4df6bb11e577f2c2c00cdd8113bfaac3fc27b
      version

      [root@docutv jdk1.7.0_72]# alternatives –config java
      There is 1 program that provides ‘java’.
      Selection Command
      ———————————————–
      *+ 1 /opt/jdk1.7.0_72/bin/java
      Enter to keep the current selection[+], or type selection number: 1

      [root@docutv jdk1.7.0_72]# pwd
      /opt/jdk1.7.0_72

      [root@docutv jdk1.7.0_72]# alternatives –install /usr/bin/jar jar /opt/jdk1.7.0_72/bin/jar 2

      [root@docutv jdk1.7.0_72]# alternatives –install /usr/bin/javac javac /opt/jdk1.7.0_72/bin/javac 2

      [root@docutv jdk1.7.0_72]# alternatives –set jar /opt/jdk1.7.0_72/bin/jar

      [root@docutv jdk1.7.0_72]# alternatives –set javac /opt/jdk1.7.0_72/bin/javac

      [root@docutv jdk1.7.0_72]# java -version
      -bash: /usr/bin/java: cannot execute binary file

      [root@docutv jdk1.7.0_72]# export JAVA_HOME=/opt/jdk1.7.0_72

      [root@docutv jdk1.7.0_72]# export JRE_HOME=/opt/jdk1.7.0_72/jre

      [root@docutv jdk1.7.0_72]# export PATH=$PATH:/opt/jdk1.7.0_72/bin:/opt/jdk1.7.0_72/jre/bin

      [root@docutv jdk1.7.0_72]# java -version
      -bash: /usr/bin/java: cannot execute binary file

      [root@docutv jdk1.7.0_72]#

      Thx in advance for help — Micael

      • Hi Miceal,

        Have you executed below command in step #2

        alternatives –install /usr/bin/java java /opt/jdk1.7.0_72/bin/java 2

    4. Hi Rahul, this is just to say I am migrating an old CentOS 4 to CentOS 6 as an occasional sysadmin (I am a software architect) and all the tips in your blog have worked great so far, thanks.

    5. Hii Rahul.

      Thanks for share this wonderful topic .I have downloaded java as ur instruction.but when i’m going to extract that,i’m getting some error…i.e

      [root@[-a opt]# cd /opt/
      [root@[-a opt]# ls
      jdk1.7.0_72
      jdk-7u72-linux-i586.tar.gz?AuthParam=1420296787_4405d9335989d1fc6e7df03f0d76c381
      jdk-7u72-linux-x64.tar.gz?AuthParam=1420273038_bb9a14b7dc51ed48b49522bb2b5b6680
      wget-log
      [root@[-a opt]# tar xzf jdk-7u72-linux-x64.tar.gz
      tar: jdk-7u72-linux-x64.tar.gz: Cannot open: No such file or directory
      tar: Error is not recoverable: exiting now
      tar: Child returned status 2
      tar: Error exit delayed from previous errors

      i’m getting these errors…plz help me Rahul…plz…

      • It looks downloaded file is created with name jdk-7u72-linux-x64.tar.gz?AuthParam=1420273038_bb9a14b7dc51ed48b49522bb2b5b6680. So rename file first before extracting

        # mv jdk-7u72-linux-x64.tar.gz?AuthParam=1420273038_bb9a14b7dc51ed48b49522bb2b5b6680 jdk-7u72-linux-x64.tar.gz
        # tar xzf jdk-7u72-linux-x64.tar.gz

    6. Hi,
      I am trying to install JAVA and Office in Red Hat7 which ever command if I give it comes No Such Directory File . Please help me is there any issue.

      • Hi Charles,

        Hyphen is not necessory here… I hope “tar xzf” will also work…
        Please try and confirm if it works for you…

    7. when formate namenode it is showing following :
      java.net.UnknownHostException and when jps it only showing Namenode jobtracker secondary namenode,datanode and tasktracker is missing.
      please tell me what are the steps to resolve this issue.
      thanks in advance.

    8. Thanks for the help.
      I’m getting this error:

      alternatives –set jar /opt/jdk1.7.0_67/bin/jar
      /opt/jdk1.7.0_67/bin/jar has not been configured as an alternative for jar

      The command to do the same for javac worked though.

    9. I am setting path of java but it is not getting executed. Kindly guide me to set path of java for hadoop installation in rhel6

    10. Hello Rahul sir..

      I hope sir yor are doing well and sir i have install many things on linux with the of you webiste and but i need more help i always get so many issue during compiling MYsql 5.5 or 5.6 ,so please try to help me in same topic and if you have already worked on it , than share the URl with me , i will be thankfull to you..

    11. Thanks Rahhul
      Very nice and informative article.

      Rahul do you have any Idea about GTK package on linux. I am trying to install Java Eclipse editor on my Linux bot bit its failing to start. Installation success but unable to start . It would be very kind help if you give some pointer. below is error. I googled a lot but did not found solution.

      00:00.72 ERROR [main] org.eclipse.equinox.log.internal.ExtendedLogReaderServiceFactory safeLogged
      Application error
      org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]
      org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]
      at org.eclipse.swt.SWT.error(SWT.java:4387)
      at org.eclipse.swt.widgets.Display.createDisplay(Display.java:913)
      at org.eclipse.swt.widgets.Display.create(Display.java:899)
      at org.eclipse.swt.graphics.Device.(Device.java:156)

      Please help karo bahe , mai bahut pareshani mei hu ..

      Thanks
      Anup

    12. Rajan prasad Upadhyay on

      If the system didnot find the “alternatives” command in centos(redhat), You could use “/usr/sbin/alternatives” instead of “alternatives”

    13. I am installing 32 bit jdk on centos 64 bit .
      After following yours steps when i fire command “java -version ” i got error
      bash:/usr/bin/java:/lib/id-linux.so.2: bad elf interpreter no such file or directory
      Please help, why is it so.

    14. If you use the RHEL Supplementary Repo, java-1.7.0-oracle* is already provided as an RPM and does all this for you (including the mess with alternatives). It is more comprehensive.

    15. Rahul, big stacks of thanks for posting this and sharing your knowledge, worked perfectly. You get a gold star today.

    16. Sorry! I mixed two things in the above email… only first portion was for your reference ….I am missing something here. In UNIX environment we used .profile. What is the equivalent file in linux to set PATH?

    17. I installed all the steps, however, I am facing issue setting-up JAVA_HOME and JRE_HOME. Once I export both the home and exit, the path resets to its original states.. JAVA_HOME turns to null when I echo $JAVA_HOME or echo $JRE_HOME

      I am using su to set them up.

      Otherwise the installation instructions are superb. The only issue I found in the step is that the directory structure you mentioned is hadoop/hadoop whereas (if I am not wrong) it should have been hadoop/hadoop-1.2.1 Please let me know if I am wrong so I can rectify it.

      Thanks in advance.
      Raj

    18. Very good step-by-step instructions. Worked for me perfect first time. Many thanks for sharing. Keep up the good work! Best, Abramo

    19. HI, i have a clean install of centos 6.5 and i did everything only instead of JDK i installed JRE because i don’t need JDK

      when i come to the part of checkin java -version centos returned

      -bash: java: command not found

      did i miss something??

      • Never mind, i fixed it by doing step 4 instead of step 3 and when i got the path variable set to the right bin

        it worked thanks for your tut 😀

    20. HI Team

      i not able to configure java. but i face this error “””Error: dl failure on line 863
      Error: failed /opt/jdk1.7.0_51/jre/lib/i386/client/libjvm.so, because /opt/jdk1.7.0_51/jre/lib/i386/client/libjvm.so: cannot restore segment prot after reloc: Permission denied””” while java -version run this command.

      i am using centos 5.8

      please help me

    21. Nice article thanks for posting it.

      It should be noted that there are other commands from the JDK/JRE referenced in the alternatives directory that may cause problems if not all of the alternatives are updated. If you look at /etc/alternatives and look for all of the associated applications that are provided with java (maybe something like ls -l /etc/alternatives |grep ‘jvm|java|jre|jdk’ ) you will notice much more than just the java command.

      For example, if you followed steps 1-2 and then ran javac, javaws, javadoc, jar, keytool, appletviewer, javah, etc… you will not get those installed from the jdk tarball in /opt but rather those installed via package (if something like the java-1.6.0-openjdk-devel package is installed) .

      After step 4 you will get it but not because of the alternatives system but because of the change in the PATH variable in step 4 which is user specific unless set in /etc/profile, /etc/profile.d/, or other system wide environment. So if you have a system process that uses javac, javadoc or a command other than java I believe you will not get the version in /opt. I believe that debian based systems (mint, ubuntu, etc.) have an update-java-alternatives command used for this purpose (to update all java related commands) but I don’t know at the moment if it is available for RHEL and derivatives like CentOS.

      Just thought I would share this in case other ran into issues.

      • Thanks Tomas, That is great help.
        I run into this because I typed java after I finished these commands:
        # cd /opt/jdk1.7.0_67/
        # alternatives –install /usr/bin/java java /opt/jdk1.7.0_67/bin/java 2
        # alternatives –config java
        and it works.
        but I can’t make it work after I finish these command:
        # alternatives –install /usr/bin/jar jar /opt/jdk1.7.0_67/bin/jar 2
        # alternatives –install /usr/bin/javac javac /opt/jdk1.7.0_67/bin/javac 2
        # alternatives –set jar /opt/jdk1.7.0_67/bin/jar
        # alternatives –set javac /opt/jdk1.7.0_67/bin/javac
        System told me “-bash: javac: command not found”.

    22. Outstanding! I read carefully, followed your directions exactly and it went smoothly on the first try! You’re amazing!

    23. If i am using yum install jdk1.7.0 means ,where is the java _home path?
      how to set the java path
      if i ive which java
      i got /usr/bin/java
      i am in confusion to export java_home path..
      please help

      • Hi Girish,

        You can use following command to find where “bin” and other files is been installed.
        # rpm -ql jdk1.7.0

    24. Tried to do this but at Step 1, after copy/pasting the wget command, I get:

      Resolving download.oracle.com… 23.0.160.209, 23.0.160.198
      Connecting to download.oracle.com|23.0.160.209|:80… connected.
      HTTP request sent, awaiting response… 403 Forbidden
      2013-08-30 22:21:20 ERROR 403: Forbidden.

      • Hi CT,

        Actually you are getting issue because of old url. You can see Java download url having a parameter AuthParam, Which can be used for a shot time only. If you are using Gnome desktop, you can simply navigate to below url and download.

        http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

        If you are using terminal, Use below video tutorial, which i always used to download java on terminal.

        http://screencast.com/t/wf9bQ0XjDPxT

        I hope it will help you.

        Thanks

        • Thanks Rahul, I figured that out and went to the website with my browser and downloaded it after accepting the license.

          But I am not a seasoned linux user (despite having used unix for a long time) and it seems I am getting stuck at every turn. My Centos (5.4) does not understand “alternatives”. Do I have to install this first?

          • Hi CT,

            /usr/sbin/alternatives command comes from chkconfig package. Check if you have this package in you system.

            # rpm -ql chkconfig

    Reply To Avi Cancel Reply

    Exit mobile version