How to set JAVA_HOME correctly on CentOS?

I am trying to set JAVA_HOME so that I can install Apache Solr with the help of this tutorial. I am connected to my server using ssh with root user

To allow the running sh script to install Apache Solr:

mount | grep noexec

Re-mounting file system with exec option:

mount -o remount,exec /dev/md1

Then every time I try to install it using the following commands

bin/install_solr_service.sh /tmp/solr-5.3.1.tgz

I get the following message:

WARNING: /opt/solr-5.3.1 already exists! Skipping extract ...

Creating /etc/init.d/solr script ...
The currently defined JAVA_HOME (/usr/local/jdk) refers
to a location where Java could not be found.  Aborting.
Either fix the JAVA_HOME variable or remove it from the
environment so that the system PATH will be searched.
The currently defined JAVA_HOME (/usr/local/jdk) refers
to a location where Java could not be found.  Aborting.
Either fix the JAVA_HOME variable or remove it from the
environment so that the system PATH will be searched.
Service solr installed.

This is what I tried so far:

nano /root/.bash_profile 
nano /etc/profile

I added the following to the files above at the end and saved them

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64
export PATH=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64/bin:$PATH

That didn’t work.

I created the following file /etc/profile.d/java.sh and put in it:

export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64/jre/
export PATH=$PATH:$JRE_HOME/bin

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64
export JAVA_PATH=$JAVA_HOME

export PATH=$PATH:$JAVA_HOME/bin

And ran the following command:

source java.sh

That also didn’t work.

I tried to run the following command:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64

No luck at all.

But when a run the following commands that is what I get

echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64
echo $PATH
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64/bin:/usr/local/jdk/bin:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64/jre//bin:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

You want to point JAVA_HOME to the JRE directory, as in:

JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/jre/

If using bash, I recommend putting this in /etc/bashrc (RH based) or /etc/bash.bashrc (Debian based):

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:/bin/java::")

Method 2

Rather than copying out files from the installation directory it would be better to set the SOLR_JAVA_HOME in /etc/default/solr.in.sh to the location of the jre folder in your installation such as usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64/jre/

Method 3

I was reading my question and found the answer in it. This is what I have done:

I have undone all the changes to /root/.bash_profile and /etc/profile

Then I created a folder called jdk in the /usr/local/ folder like so

mkdir /usr/local/jdk

Since this is were the jdk is expected to be located in. Then I copied the jdk files to that newcp -R /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64/jre/* /usr/local/jdk/ folder like so:

cp -R /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64/jre/* /usr/local/jdk/

As simple as that I was now able to install Apache Solr

Method 4

  1. find java install directory first
# type java
java is /usr/bin/java

# ls -l /usr/bin/java
lrwxrwxrwx. 1 root root 22 Jul 24 17:48 /usr/bin/java -> /etc/alternatives/java

# ls -l /etc/alternatives/java
lrwxrwxrwx. 1 root root 44 Jul 24 17:48 /etc/alternatives/java -> /usr/lib/jvm/adoptopenjdk-8-hotspot/bin/java
  1. export string is export JAVA_HOME="/usr/lib/jvm/adoptopenjdk-8-hotspot/"
  2. put export string at the end of the /etc/profile
  3. put export string at the end of the /etc/bashrc
  4. open new session and test your JAVA_HOME settings through echo $JAVA_HOME


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x