Question: I installed tomcat, set variables `CATALINA_HOME=/opt/tomcat and CATALINA_BASE=/opt/tomcat`. in terminal I entered command which java and got response `/usr/bin/java`. So how I understand this is path for JAVA\_HOME. I set it. When I start tomcat in terminal with `$CATALINA_HOME/bin/startup.sh` I get response:

```
Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:        /usr/bin/java
Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Tomcat started.

```

But when I check, I see that tomcat wasn't started and in logs I found:

```
/opt/tomcat/bin/catalina.sh: 1: eval: /usr/bin/java/bin/java: not found

```

I suppose,that something wrong with path to java. How can I fix it?
PS everyhing was performed in Ubuntu OS

Answer: 
When the tomcat is started it is searching for setenv.sh in Catalina home or base.

Quote from Catalina.sh:

```
#   Do not set the variables in this script. Instead put them into a script
#   setenv.sh in CATALINA_BASE/bin to keep your customizations separate.

#
#   JAVA_HOME       Must point at your Java Development Kit installation.
#                   Required to run the with the "debug" argument.

# Ensure that any user defined CLASSPATH variables are not used on startup,
# but allow them to be specified in setenv.sh, in rare case when it is needed.
CLASSPATH=

if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
  . "$CATALINA_BASE/bin/setenv.sh"
elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
  . "$CATALINA_HOME/bin/setenv.sh"
fi

```

So best way to set JAVA\_HOME in tomcat is through setenv.sh

1. create a file setenv.sh in $CATALINA\_HOME folder
2. Add this line to it : "export JAVA\_HOME=/usr/"
3. Make it executable : "chmod 750 setenv.sh"

Start the startup.sh script, it will start the tomcat.
This one solved my issue:
<https://ubuntuforums.org/showthread.php?t=1018063>

PS: I installed tomcat8 by ***apt-get*** instead of downloading the compressed tomcat file.