I have install java through yum on CentOS, however another java programme needs to know what the JAVA_HOME environmental variable is. I know all about setting environmental variables, but what do I set it to? java
is installed in /usr/bin/java
, it can't be there!
Actually I found it,
it's
/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/
. I found out what it was by doingupdate-alternatives --display java
and it showed me the directory/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
I'm not quite sure but if you install the normal RPMS the JAVA_HOME value can also be set to this:
EDIT: I just checked on my home system. I have created this file:
That contains:
and I'm using the official version from Sun: jdk-1.6.0_12-fcs
EDIT: Here is how I set up Java on my machine:
Install Java
Download and install Java JDK from Oracle
Make it primary
Ensure this Java is used instead of the OpenJDK version using the following two commands:
First
Second
Set JAVA_HOME
Ensure all users have their JAVA_HOME environment variable set to the correct value:
You want to set JAVA_HOME to be the root location of the JDK or JRE, for example:
If the JDK (Development kit) is installed, ypu probably want it to point to that, else use the JRE path (Java Runtime Environment). Then, you might want to set your $PATH environment variable to include the bin directory as well:
If you are using tomcat, you might also need to set CATALINA_HOME for the tomcat user.
To set this for the system you want to edit your /etc/profile or add a .sh file in /etc/profile.d folder. For a particular user you can put it in the users ~/.profile or ~/.bash_profile files.
Below is always working for me perfectly:
It means I can set JAVA_HOME as /usr/java/jdk1.6.0_31
I considered the problem of if one changes the version of java being used with:
Then any hard coded
JAVA_HOME
is going to change (atleast it will on the Centos 6.6 I'm currently staring at). That is, there is no/usr/java
.This doesn't seem like the best way (open to failure) but in the 10 mins I've spent on this it seems the best.
In
/etc/bashrc
I modified the setting toJAVA_HOME
to be:You have to do something similar on MacOSX but without all the
grep
andsed
to parse out the result. Surelyalternatives
offers an similarly easier solution.Anyways I hope I helped.
Update
No that would be
JRE_HOME
. The JDK / SDK isn't proving as obvious (I'll keep looking).The
alternatives
seems to only be about the JRE by default. I defer to @Niels answer or just install Java withyum
and set the JAVA_HOME to that (the trick is where I found where that was installed to!).I noticed
java_1.8.0
is a symlink to/etc/alternatives/java_sdk_1.8.0
and so set my $JAVA_HOME to/usr/lib/jvm/java_1.8.0
. In the/etc/bashrc
.Thats weird, the whole point of having a JAVE_HOME environmental variable is so you don't have to specify the path to each program, it can get this path by looking for this variable.
Either way, the correct way to find the environmental variable for JAVA_HOME is to use echo:
Running this command will display the path no matter what version you are running, from command line.
re: Centos7, refer to the /etc/java/java.conf file.
in it JAVA_HOME is indicated to be located in the following dir : /usr/lib/jvm/java
i checked, it is the correct version of the jdk I loaded via yum, and so...
my env doesn't have JAVA_HOME set by default, therefore I set it in .bash_profile
I found the package manager can place in a variety of locations, so using which (you will need to explicitly install this if using a container) the following is a little less brittle
or for JRE