2009-11-09 30 views
32

Tôi có 2 Dự án Web Java. Một chạy trên JDK 1.5 và cái kia chạy trên JDK 1.6. Tôi muốn chạy cả hai trên cùng một máy tính, nhưng biến môi trường JAVA_HOME chỉ có thể có một giá trị. Tôi muốn đặt JAVA_HOME cho mỗi máy chủ Tomcat.Cách đặt JAVA_HOME cho nhiều phiên bản Tomcat?

+0

Câu hỏi liên quan (đối với Linux): http://askubuntu.com/questions/154953/specify-jdk-for-tomcat7 –

Trả lời

19

Một điều bạn có thể làm là sửa đổi catalina.sh (dựa trên Unix) hoặc catalina.bat (dựa trên cửa sổ).

Trong mỗi tập lệnh, bạn có thể đặt các biến nhất định mà chỉ các quy trình được tạo trong trình bao sẽ kế thừa. Vì vậy, đối catalina.sh, sử dụng các dòng sau:

export JAVA_HOME="intented java home" 

Và đối với các cửa sổ sử dụng

set JAVA_HOME="intented java home" 
+1

Phiên bản cửa sổ có khác biệt với phiên bản unix không? Tôi không có anh chàng hàng loạt, nhưng tôi nghĩ đó là 'set', hay tôi đang hẹn hò với bản thân mình? –

+1

Tôi đang sử dụng Windows XP và tôi đã thêm dòng "xuất JAVA_HOME =" C: \ Program Files \ Java \ jdk1.6.0_12 "vào đầu tệp Tomcat/bin/catalina.bat Nhưng Tomcat không thể bắt đầu Herr là một phần của tập tin rem Guess CATALINA_HOME của tôi nếu không được định nghĩa xuất khẩu JAVA_HOME = "C: \ Program Files \ Java \ jdk1.6.0_12" bộ JAVA_OPTS =% JAVA_OPTS% -Xmx512m bộ CURRENT_DIR =% cd% nếu không phải "% CATALINA_HOME%" == "" goto gotHome đặt CATALINA_HOME =% CURRENT_DIR% nếu tồn tại "% CATALINA_HOME% \ bin \ catalina.bat" goto okHome –

+0

Ah. Sử dụng ác ý của dán sao chép! Tôi không có ý định đặt xuất khẩu cho phiên bản windows. Ry4an đã đúng trong tập hợp đó là lệnh chính xác. e câu trả lời. – bogertron

7

Ngoài ra, lưu ý rằng không nên có bất kỳ không gian sau khi =:

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

Trong UNIX, tôi đã gặp sự cố này, tôi đã chỉnh sửa catalina.sh theo cách thủ công và nhập

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

làm 2 dòng đầu tiên. Tôi đã thử đặt số JAVA_HOME ở số /etc/profile nhưng không được.

Điều này đã hiệu quả.

0

Chỉ cần một lưu ý ...

Nếu bạn thêm mã để setclasspath.bat hoặc setclasspath.sh, nó sẽ thực sự được sử dụng bởi tất cả các kịch bản Tomcat của bạn có thể chạy, thay vì chỉ Catalina.

Phương pháp thiết lập biến là như của người khác đã mô tả.

36

nơi một setenv.sh trong thư mục bin với

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

hoặc một phiên bản khác của bạn đang chạy.

+2

Không cần thêm 'JAVA_HOME' và' JRE_HOME'. _Nếu cả JRE_HOME và JAVA_HOME đều được chỉ định, JRE_HOME được sử dụng._ http://tomcat.apache.org/tomcat-7.0-doc/RUNNING.txt – user454322

2

Linux dựa Tomcat6 nên có /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

Nếu bạn là một người sử dụngWindows, đưa nội dung dưới đây trong một setenv.bat tập tin mà bạn phải tạo trong Tomcat bin thư mục.

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

Nếu bạn là một Linux người dùng, đưa nội dung dưới đây trong một setenv.sh tập tin mà bạn phải tạo trong Tomcat bin thư mục.

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

tôi đã cùng một vấn đề hệ điều hành của tôi là windows 8 và tôi đang sử dụng Tomcat 8, Tôi chỉ chỉnh sửa setclasspath .dơi tập tin trong thư mục bin và thiết lập JAVA_HOME và JRE_HOME như thế này ...

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

và nó hoạt động tốt cho tôi bây giờ ......

4

Bạn có thể thêm setenv.sh trong thư mục bin với:

xuất khẩu JAVA_HOME = $ (readlink -f/usr/bin/java | sed "s: bin/java ::")

và nó sẽ tự động thay đổi khi bạn cập nhật gói của mình.

2

Đối với distro Debian chúng ta có thể ghi đè lên các thiết lập mặc định thông qua

/etc/default/tomcat6 

Đặt JAVA_HOME trỏ đến phiên bản java mà bạn muốn.

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

Tôi nghĩ rằng đây là một thực hành tốt nhất (Bạn có thể có nhiều ví dụ Tomcat trong cùng một máy tính, bạn muốn mỗi Tomcat dụ sử dụng khác Java Runtime Environment):

enter image description here

enter image description here

Đây là hướng dẫn sử dụng bên trong tệp: 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. 
Các vấn đề liên quan