Tomcat JAVA_HOME'u tanımıyor


15

Ubuntu 14.04 Server'ı yükledim, JDK1.8u5 ve Tomcat7'yi çıkardım ve .profile dosyasına ekledim (ayrıca benzer [non] sonuçlarıyla .bashrc'ye eklemeyi denedim):

export JAVA_HOME=/opt/java/jdk1.8.0_05
export PATH=$PATH:$JAVA_HOME/bin

koştuğumda echo $JAVA_HOMEbeklenen sonucu alıyorum /opt/java/jdk1.8.0_05. Ayrıca çalıştırabilir java -versionve Java'dan doğru yanıtı alabilirsiniz. çok uzak çok iyi.

şimdi Tomcat'i başlatmaya çalışıyorum (ayrıca catalina.sh'ı da denedim) ve aşağıdakileri alıyorum:

user@ubuntu:~$ sudo /opt/tomcat7/apache-tomcat-7.0.53/bin/startup.sh
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

ama ... sadece denedim echo $JAVA_HOMEve işe yaradı mı?

Yanıtlar:


23

İçinde bir yardım metni var catalina.sh. Burada alıntı yapacağım:

#   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

tomcatKullanmaya başladığınızda catalina.sh, dosya ararsetenv.sh ve kaynak yapar. CATALINA_HOMEVeya arıyor CATALINA_BASE.

Sete daha iyi bir yol Yani JAVA_HOMEiçin tomcatgeçerli:

  1. Zaten mevcut değilse setenv.sh, klasörde adlı bir komut dosyası oluşturun CATALINA_BASE/bin.
  2. Bu satırı şuraya ekle: setenv.sh

    export JAVA_HOME=/opt/java/jdk1.8.0_05
  3. Yürütülebilir yapın.


Neden bu çözümü kullanmalısınız?

Koddaki ortam değişkenini ayarlamak daha güvenlidir. Değişkenleri daima mümkün olduğunca yerel olarak ayarlamaya çalışın. Kullanmayan deneyin /etc/environment, /etc/profileeğer gerçekten varsa ve diğerleri yok gerek Global Environment Variable. Ayarlama JAVA_HOME, setenv.shfarklı sürümü gerektiren javaancak bir kullanıcı tarafından çalıştırılan farklı uygulamalarla farklı tomcat'leri kullanabilmenizi sağlar . Diğer kullanıcı ortamları sizden etkilenmez.


4

Süper değişken için değil, kendi kullanıcınız için ortam değişkenini ayarladığınızdan, iki seçeneğiniz vardır:

  1. -EAşağıdaki gibi seçeneği kullanarak değişkeni dışa aktarmanız gerekir :

    sudo -E /opt/tomcat7/apache-tomcat-7.0.53/bin/startup.sh

    Bunun komutu çalıştırırken tüm ortam değişkenlerini dışa aktaracağını unutmayın. Komutu root olarak çalıştırdığınızda normal kullanıcı ortamı dışarı döküldüğünden bu tercih edilmez. Bu arzu edilmez.

  2. Değişkeni kök.bashrc /etc/enviroment dosyasında dışa aktarın . Bir terminal açın ve şunu yazın:

    sudo nano /etc/environment

    yönetici şifrenizi girin ve dosyanın sonuna aşağıdaki satırları ekleyin:

    JAVA_HOME=/opt/java/jdk1.8.0_05
    PATH=$PATH:$JAVA_HOME/bin

    ve sonra

    source /etc/environment

    veya makinenizi yeniden başlatın ve kullandığınız komutu tekrar deneyin.


Güncelleme:

Bu yanıt, 2. adımın neden işe yaramayacağı, sudoortamı sıfırlayacağı ve güvenli bir yol sağlayacağı için ipucu sağladı , böylece tüm global değişkenler sıfırlandı. Kullanılacak bir geçici çözüm

sudo su

ve ayarlanan ortam değişkenlerini kullanan komutu yürütün.


1
Teşekkürler @Jobin - seçenek 1 çalışır, bu yüzden cevabınızı iptal ettim. Şimdi tercih ettiğim çözüm olan 2. seçeneği kontrol edeceğim ve eğer işe yararsa cevabınızı kabul edeceğim.
isapir

Komutları /root/.bashrcnano ile önerdiğiniz gibi ekledim , ancak user@ubuntu:~$ source /root/.bashrcsonuçları çağırıp -bash: /root/.bashrc: Permission deniedsudo verimleriyle denedim sudo: source: command not found. bu noktada orijinal komutu tekrar denemek beni 0 noktasına geri getiriyor.
isapir

@Igal: Bu sorunu çözmek için cevabımı düzenledi, sudo -iönce senden önce kullanmalısın source. Bunu işaret ettiğiniz için teşekkürler.
jobin

Tamam, acemi soruları affedin, ama sudo -ikaynak dediğimde nasıl çıkarım? çıkmadan orijinal hata mesajını alıyorum ...
isapir

@Igal: Sadece Ctrl + d tuşlarına basın veya yazın exit.
jobin

0

Aradığım çözüm /etc/environment, EnvironmentVariables'da belirtildiği gibi , komut dosyalarını işlemediği ve değişkenleri genişletmediği için, ( dışa aktarma olmadan ) aşağıdakileri eklemek işe yaradı:

JAVA_HOME=/opt/java/jdk1.8.0_05

Sonra değişikliklerin etkili olması için sistemi yeniden başlattım.


0

Ben de JAVA_HOME eklendi tomcat7.serviceSenaryonun setenv.shtarafından kaynaklı olsun değildicatalina.sh

Adımlar:

1. tomcat7 hizmet komut dosyasını açın

sudo gedit /etc/init.d/tomcat7

2.JAVA_HOME'u ayarlayın

.
.
.
JAVA_HOME=/usr/lib/jvm/java-8-oracle

# Directory where the Tomcat 6 binary distribution resides
CATALINA_HOME=/usr/share/$NAME

# Directory for per-instance configuration files and webapps
CATALINA_BASE=/var/lib/$NAME

# Use the Java security manager? (yes/no)
TOMCAT7_SECURITY=no

3. tomcat7 hizmetini başlat

sudo service tomcat7 status

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.