Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JDK environment variable ( Ubuntu 12.04) with tomcat

In Ubuntu,i set jdk environment(JAVA_HOME,JRE_HOME), and java -version can use. but i can start up tomcat. some info :

  • Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
  • At least one of these environment variable is needed to run this program

environment set /etc/profile

JAVA_HOME=/opt/jvm/java/jdk1.7.0_25
JRE_HOME=/opt/jvm/java/jdk1.7.0_25/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME
export JAVA_HOME
export JRE_HOME
export PATH

logs

sunshanming@sunshanming-vm1:~$ sudo /opt/apache-tomcat-7.0.42/bin/startup.sh 
[sudo] password for sunshanming: 
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
sunshanming@sunshanming-vm1:~$ echo $JAVA_HOME
/opt/jvm/java/jdk1.7.0_25
sunshanming@sunshanming-vm1:~$ echo $JRE_HOME
/opt/jvm/java/jdk1.7.0_25/jre
sunshanming@sunshanming-vm1:~$ java -version
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)
like image 674
yaming Avatar asked Feb 16 '23 08:02

yaming


2 Answers

Try to set the variables in setenv.sh in tomcats bin folder. Thats where you specify the environment for tomcat.

Just create this file in tomcat/bin/setenv.sh

#!/bin/bash
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/
export CATALINA_OUT=/var/log/tomcat/catalina.out
export CATALINA_PID=/var/log/tomcat/catalina.pid

You can also specify other env. vars for you application there.

Note: They don't create this file by default. Otherwise it would be overwritten on an update.

Update because of your comment:

The problem is that the /etc/profile is not loaded if you use sudo.

You can test it like this:

# Write a variable SMALLTEST into the profile file
sudo su -c "echo \"export SMALLTEST=Hello World\" >> /etc/profile"

# create a small script (like your startup.sh) that read the variable
echo "echo Variable is set to: \$SMALLTEST" > smalletst
chmod  +x smalletst 

# Execute the script with sudo
sudo ./smalletst 
Variable is set to:

And you see that the env. var is not set.

Update 2:

If you like to let your tomcat run as a service, you should have a look to the /opt/tomcat/bin/daemon.sh script. This you can put ti /etc/init.d/tomcat and specify your env. in the setenv.sh.

like image 148
d0x Avatar answered Feb 17 '23 21:02

d0x


With Ubuntu you don't have to modify anything for running tomcat, if you use the packages that ship with the Ubuntu repo.

Just type sudo apt-get install tomcat7. That will install tomcat7 with all the needed dependencies.

I recommend to not install anything manually(without the package system), if you don't have to.

like image 40
Ortwin Angermeier Avatar answered Feb 17 '23 21:02

Ortwin Angermeier