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
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
# 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 --setjar /opt/jdk1.7.0_79/bin/jar # alternatives --setjavac /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
# 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
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.
86 Comments
Thank you! What I really need now.
Just wondering if you have a bash script for this too? 🙂
i need java archieve for downloading at my PC . can u please tell where to agree the license statments?
Thanks a lot, Muito Obrigado
centos why using tar.gz ? not rpm ?
Very well. thanks
Very GOOD!!
Thanks boss.
Useful! Thanks!
thank you
Perfect example.
I used CentOS 6.5 final and worked perfectly without any problems.
To add path permanently on CentOS 6.5 one can follow
http://serverfault.com/questions/102932/adding-a-directory-to-path-in-centos
THANKS!!!
Thank you so much, you made my day
Very useful for me.
Thank you.
Thanks Rahul, it was extremely helpful to look at various options for installations.
Thanks!
Followed step by step, worked flawlessly!
Many thanks
Good post !!
Thanks , It helped me today .
Brilliant tutorial!
Excellent tutorial …. works perfectly………..
bash: /usr/bin/java: cannot execute binary file
Please help me out..
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. 🙂
How to update my java version from 31 to 45?
Hi Vijay,
Do you not need specific java version 7u45 ?
Dear Rahul,
i just want to know update my java version, can u pls help me out from that?
Hi Vijay,
You can use this article to update java version without any issue. Let me know in case any issue occurs.
thx a lot! great tut 🙂
Thanks. Your tutorial helped.
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?
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
hank you =3 a lot for your sweet and forward article.
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.
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
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.
thanks was looking for this tutorial
Thank you so much. This was very helpful.
Thankyou So much!!
You really helped me out with this tutorial! Thanks!
worderfull, easy to follow and works. thanks your article save my time
On step 2 you missed a hyphen. It should be… “tar -xzf”
Hi Charles,
Hyphen is not necessory here… I hope “tar xzf” will also work…
Please try and confirm if it works for you…
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.
You did not mention where do we have to update the JAVA_HOME , JRE_HOME and PATH variable…
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.
Awesome Tutorial
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
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..
thanks for your help
Wonderful instructions. It worked without an incident.
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
If the system didnot find the “alternatives” command in centos(redhat), You could use “/usr/sbin/alternatives” instead of “alternatives”
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.
Try this:
yum install glibc.i686
I yum installed half the internet and couldn’t get all my dependencies resolved. Started over with earlier VM snapshot and your one library suggestion fixed everything. Thank you.
Hi,
I have solved the liunx.so issue by using your method. Thanks alot.
Hi Rahul
How to upgrade tomcat 7.0.50 to 7.0.54 in Windows OS ?
Thanks, Rahul! That’s a perfect instruction. 🙂
thank you
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.
Just thank you very much for these clear instructions.
Rahul, big stacks of thanks for posting this and sharing your knowledge, worked perfectly. You get a gold star today.
Thanks man!
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?
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
Very good step-by-step instructions. Worked for me perfect first time. Many thanks for sharing. Keep up the good work! Best, Abramo
Its made very simple to understand and install. Thnx a lot Rahul
Thanks. Simple and useful.
Thank you so much. It worked like a charm on Centos 5.9
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 😀
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
Hi,
Do you have SELinux enabled ?
Hi Rahul,
yes its enabled ..
Hi Tamilselvan,
You can disable SELinux to fix this issue. If you still need keep SELinux enforcing, you need to add some security context on libjvm.so file.
This topic may help you for this.
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”.
Outstanding! I read carefully, followed your directions exactly and it went smoothly on the first try! You’re amazing!
Thank you so much for this guide. This helped me a lot.
Thanks, its great post
congratulations
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
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
Great, thank you.