2009-11-09 10 views
32

Mam 2 projekty WWW Java. Jeden działa na JDK 1.5, a drugi działa na JDK 1.6. Chcę uruchomić je oba na tym samym komputerze, ale zmienna środowiskowa JAVA_HOME może mieć tylko jedną wartość. Chcę ustawić JAVA_HOME dla każdego serwera Tomcat.Jak ustawić JAVA_HOME dla wielu instancji Tomcat?

+0

Powiązane pytanie (dla systemu Linux): http://askubuntu.com/questions/154953/specify-jdk-for-tomcat7 –

Odpowiedz

19

Jedna rzecz, którą można zrobić, to zmodyfikować catalina.sh (oparty na Uniksie) lub catalina.bat (oparty na systemie Windows).

W każdym ze skryptów można ustawić pewne zmienne, które będą dziedziczyć tylko procesy utworzone w powłoce. Więc dla catalina.sh należy stosować następujące linie:

export JAVA_HOME="intented java home" 

i Windows użyć

set JAVA_HOME="intented java home" 
+1

Czy wersja systemu Windows nie powinna różnić się od wersji systemu Unix? Nie jestem partyjnym facetem, ale myślałem, że to "set", czy też się spotykam? –

+1

Używam systemu Windows XP i dodałem wiersz "export JAVA_HOME =" C: \ Program Files \ Java \ jdk1.6.0_12 "na początku pliku Tomcat/bin/catalina.bat Ale Tomcat nie może uruchomić Herr jest częścią mojego pliku rem Guess CATALINA_HOME jeśli nie zdefiniowano export JAVA_HOME = "C: \ Program Files \ Java \ jdk1.6.0_12" zestaw JAVA_OPTS =% JAVA_OPTS% -Xmx512m zestaw CURRENT_DIR =% cd% jeśli nie "% CATALINA_HOME%" == "" goto getHome zestaw CATALINA_HOME =% CURRENT_DIR% jeśli istnieje "% CATALINA_HOME% \ bin \ catalina.bat" goto okHome –

+0

Ah. Złe użycie kopii wklej! Nie chciałem wstaw eksport do wersji Windows Ry4an był poprawny w tym zestawie jest poprawne polecenie e odpowiedź. – bogertron

7

Należy również pamiętać, że nie powinno być żadnych spacji po =:

set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_27 
3

W systemie UNIX miałem ten problem, ręcznie edytowałem catalina.sh i wprowadziłem

export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.24 
echo "Using JAVA_HOME:  $JAVA_HOME" 

jako pierwsze 2 linie. Próbowałem ustawić JAVA_HOME w /etc/profile, ale to nie pomogło.

To działało w końcu.

0

Tylko uwaga ...

Jeśli dodać, że kod do setclasspath.bat lub setclasspath.sh, że faktycznie będą używane przez wszystkich skryptów Tomcat mógłby biegać, a nie tylko Catalina.

Sposób ustawiania zmiennej jest taki, jaki opisali inni.

36

Umieść setenv.sh w katalogu bin z

JAVA_HOME=/usr/java/jdk1.6.0_43/ 
JRE_HOME=/usr/java/jdk1.6.0_43/jre 

albo inna wersja Twój bieg.

+2

Nie trzeba dodawać "JAVA_HOME" i "JRE_HOME". _Jeśli podano JRE_HOME i JAVA_HOME, użyto JRE_HOME._ http://tomcat.apache.org/tomcat-7.0-doc/RUNNING.txt – user454322

2

Linux oparta tomcat6 powinien mieć /etc/tomcat6/tomcat6.conf

# System-wide configuration file for tomcat6 services 
# This will be sourced by tomcat6 and any secondary service 
# Values will be overridden by service-specific configuration 
# files in /etc/sysconfig 
# 
# Use this one to change default values for all services 
# Change the service specific ones to affect only one service 
# (see, for instance, /etc/sysconfig/tomcat6) 
# 

# Where your java installation lives 
#JAVA_HOME="/usr/lib/jvm/java-1.5.0" 

# Where your tomcat installation lives 
CATALINA_BASE="/usr/share/tomcat6" 
... 
12

Jeżeli jesteś Okna użytkownik umieścić treść poniżej w setenv.bat pliku, który musi utworzyć w katalogu Tomcat bin.

set JAVA_HOME=C:\Program Files\Java\jdk1.6.x 

Jeżeli jesteś Linux użytkownika, umieścić poniżej treści w setenv.sh pliku, który należy utworzyć w Tomcat bin katalogu.

JAVA_HOME=/usr/java/jdk1.6.x 
2

miałem ten sam problem mój jest system operacyjny Windows 8 i używam Tomcat 8, Właśnie redagował setclasspath.bat plik w folderze bin i ustawić JAVA_HOME i JRE_HOME tak ...

@echo off
...
...
zestaw „JRE_HOME =% ProgramFiles% \ Java \ jre8"
zestaw "JAVA_HOME =% ProgramFiles% \ Java \ jdk1.7.0_03"
...
...

i działa dobrze dla mnie teraz ......

4

Możesz dodać setenv.sh w katalogu bin z:

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

i zmieni się dynamicznie po aktualizacji pakietów.

2

Dla dystrybucji Debian możemy zastąpić ustawienie domyślne poprzez

/etc/default/tomcat6 

ustawić JAVA_HOME skierowanymi do wersji java chcesz.

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

myślę, że to jest najlepsze praktyki (może być mieć wiele instancji Tomcat na tym samym komputerze, chcesz na przykład Tomcat użyć innego Java Runtime Environment):

enter image description here

enter image description here

To jest instrukcja wewnątrz pliku: catalina.sh

# JRE_HOME  Must point at your Java Runtime installation. 
#     Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME 
#     are both set, JRE_HOME is used. 
Powiązane problemy