【问题标题】:How to set JAVA_HOME or CATALINA_HOME if I have more than 1 version used for Projects?如果我有多个用于项目的版本,如何设置 JAVA_HOME 或 CATALINA_HOME?
【发布时间】:2011-09-04 13:28:44
【问题描述】:

我有不同的项目使用不同版本的JDK(5.0、6.0)和Tomcat(6.0、7.0),那么我的JAVA_HOMECATALINA_HOME应该如何在环境变量中设置呢?

或者,如果我通过.War 文件运行我的应用程序,可能不需要在环境变量中设置JAVA_HOMECATALINA_HOMEjdk/tomcat 服务器将运行我打包时选择的版本(通过 Eclipse -> 首选项...)。

【问题讨论】:

    标签: java tomcat


    【解决方案1】:

    在tomcat启动脚本/bin/catalina.sh内部,使用了如下环境变量:

    • JAVA_HOME是用来运行tomcat和web应用的JDK路径
    • CATALINA_HOME 是 tomcat 二进制文件的路径
    • CATALINA_BASE是tomcat配置文件的路径

    那么,这种方法怎么样?例如:

    将 JDK 5.0 安装到:/opt/jdk5
    将 JDK 6.0 安装到:/opt/jdk6
    安装tomcat 6.0到:/opt/tomcat6
    将tomcat 7.0安装到:/opt/tomcat7

    您的每个 Web 应用程序都有自己的文件夹来保存自己的 tomcat 配置。例如 : /home/web1 用于 Web 应用程序 1
    /home/web2 用于 Web 应用程序 2

    在每个文件夹中,我们需要以下子目录:conflogstempwebappswork。只需从 tomcat 安装文件夹中复制这些子目录(即/opt/tomcat7/) 。然后将.war 放到对应的webapps 文件夹中(例如/home/web1/webapps/webappl.war/home/web2/webapps/webapp2.war )。

    最后,编写一个脚本来为每个应用程序使用不同的 JDK 和 tomcat 启动 tomcat。例如,要启动 web1,您的脚本应如下所示:

    JAVA_HOME=/path/to/jdk  #eg./opt/jdk6 
    CATALINA_HOME=/path/to/tomcat/installation #eg./opt/tomcat7 
    CATALINA_BASE=/home/web1/
    export JAVA_HOME JAVA_OPTS CATALINA_HOME CATALINA_BASE
    $CATALINA_HOME/bin/catalina.sh start
    

    参考: http://www.mohancheema.net/appserver/setting-tomcat-to-run-mutiple-instances-of-it

    【讨论】:

    • 在哪里编写我配置 CATALINA_HOME 所在位置的脚本?该脚本应该在哪个文件夹中?它应该有一个特定的名称吗?
    【解决方案2】:

    如果您在 Eclipse 中运行它,您可以使用“运行配置”对话框来设置您需要更改的任何环境变量。当您执行指定的运行配置时,这些会自动设置。要使用它,右键单击您的项目,选择运行 -> 运行配置。你可以选择一个运行配置,然后转到环境选项卡,在那里你可以指定你想要的自定义变量,也可以覆盖操作系统设置的任何内容。

    如果您想在 Eclipse 之外执行此操作,并且为每个项目保留一份专用的 Tomcat 副本,请根据您的操作系统编辑 startup.sh 或 startup.bat 文件,然后在此处显式设置环境变量。

    例如。对于项目 1:,在 /opt/apache-tomcat6-1/bin/startup.sh 文件顶部添加这些行

    export JAVA_HOME='/opt/jdk1' export JAVA_HOME='/opt/apache-tomcat6-1'

    例如。对于项目 2:,在 /opt/apache-tomcat6-2/bin/startup.sh 文件顶部添加这些行

    export JAVA_HOME='/opt/jdk2' export JAVA_HOME='/opt/apache-tomcat6-2'

    如果您没有 Tomcat 的专用副本,那么您可以为每个项目创建一个 shell 脚本/批处理文件,该文件将像这样设置必要的环境变量,然后调用相应的 startup.sh 或 startup.bat 文件。

    【讨论】:

    • startup.sh 是 UNIX 的,如果我在 Windows 上运行应该是 startup.bat,对吗?
    【解决方案3】:

    这些变量由启动 Tomcat 的脚本使用,否则无关紧要。您可以在运行startup.sh 脚本之前立即设置它们,或者您可以编辑catalina.sh 脚本以在脚本本身中设置值(这是一个很好的方法,因为catalina.sh 由其他脚本共享),或者您可以编写自己的脚本来设置变量,然后调用 tomcat 脚本......有很多可能性。你只是不能全局设置变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      • 2021-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多