如何为多个Tomcat实例设置JAVA_HOME?

如何为多个Tomcat实例设置JAVA_HOME?,java,tomcat,Java,Tomcat,我有两个Java Web项目。一个运行在JDK1.5上,另一个运行在JDK1.6上。我想在同一台计算机上运行这两个变量,但JAVA_HOME环境变量只能有一个值。我想为每个Tomcat服务器设置JAVA_主页。您可以做的一件事是修改catalina.sh(基于Unix)或catalina.bat(基于windows) 在每个脚本中,您可以设置某些变量,这些变量只有在shell下创建的进程才会继承。因此,对于catalina.sh,请使用以下行: export JAVA_HOME="intente

我有两个Java Web项目。一个运行在JDK1.5上,另一个运行在JDK1.6上。我想在同一台计算机上运行这两个变量,但JAVA_HOME环境变量只能有一个值。我想为每个Tomcat服务器设置JAVA_主页。

您可以做的一件事是修改catalina.sh(基于Unix)或catalina.bat(基于windows)

在每个脚本中,您可以设置某些变量,这些变量只有在shell下创建的进程才会继承。因此,对于catalina.sh,请使用以下行:

export JAVA_HOME="intented java home"
和供windows使用

set JAVA_HOME="intented java home"

另外,请注意,
=
后面不应该有空格:

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

在UNIX中,我遇到了这个问题,我手动编辑了
catalina.sh
,然后输入

export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.24
echo "Using JAVA_HOME:       $JAVA_HOME"
作为前两行。我尝试在
/etc/profile
中设置
JAVA\u HOME
,但没有任何帮助

这终于奏效了。

只是一个提示

如果您将该代码添加到setclasspath.bat或setclasspath.sh,那么实际上您可以运行的所有Tomcat脚本都将使用它,而不仅仅是Catalina


设置变量的方法与其他变量的方法相同。

在bin目录中放置一个setenv.sh,使用

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

或者运行的其他版本。

基于Linux的Tomcat6应该具有/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"
...

如果您是Windows用户,请将下面的内容放入必须在Tomcatbin目录中创建的setenv.bat文件中

set JAVA_HOME=C:\Program Files\Java\jdk1.6.x
JAVA_HOME=/usr/java/jdk1.6.x
如果您是Linux用户,请将下面的内容放入必须在Tomcatbin目录中创建的setenv.sh文件中

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

我的操作系统是windows 8,我使用的是Tomcat 8,我也遇到了同样的问题, 我刚刚编辑了bin文件夹中的setclasspath.bat文件,并将JAVA_HOME和JRE_HOME设置为 像这样

@回声消失


设置“JRE\U HOME=%ProgramFiles%\Java\jre8”
设置“JAVA\u HOME=%ProgramFiles%\JAVA\jdk1.7.0\u 03”



现在它对我来说很好……

您可以在bin目录中添加setenv.sh,方法如下:

export JAVA_HOME=$(readlink-f/usr/bin/JAVA | sed“s:bin/JAVA:”)


当您更新软件包时,它将动态更改。

对于Debian发行版,我们可以通过默认设置覆盖该设置

/etc/default/tomcat6
JAVA\u HOME
设置为指向所需的JAVA版本

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

我认为这是一个最佳实践(您可能在同一台计算机中有许多Tomcat实例,您希望每个Tomcat实例使用其他Java运行时环境):

这是文件中的手册:
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.

windows版本不应该与unix版本不同吗?我不是批处理人员,但我认为它是
set
,还是我在约会?我使用的是Windows XP,我在文件Tomcat/bin/catalina.bat的开头添加了一行“export JAVA_HOME=“C:\Program Files\JAVA\jdk1.6.0_12”,但Tomcat无法启动Herr是我文件rem猜catalina_HOME的一部分,如果没有定义export JAVA_HOME=”C:\Program Files\Java\jdk1.6.0_12“set-Java_-OPTS=%Java_-OPTS%-Xmx512m set-CURRENT_-DIR=%cd%如果不是“%CATALINA_-HOME%”,则==“goto-gotHome set-CATALINA_-HOME=%CURRENT_-DIR%”如果存在“%CATALINA_-HOME%”\bin\CATALINA.bat“好了,好了。复制粘贴的邪恶使用!我的意思不是要导出windows版本。Ry4an在该集合中是正确的,这是正确的命令。更新答案。感谢您的帮助,我已经解决了我的问题,我们必须使用set命令和JAVA_HOME的vaule,其中包含一个不带字符的字符串(set JAVA_HOME=C:\Program Files\JAVA\jdk1.6.0_12)Documnetation说它应该在setenv中完成,而不是在catalina中。不需要添加
JAVA\u HOME
JRE\u HOME
。如果同时指定了JRE\u HOME和JAVA\u HOME,则使用JRE\u HOME。相关问题(对于Linux):