问题描述
JDK版本 : 1.6JDK变量配置 : classpath=C:Javajdk1.6.0bin JAVA_HOME=C:Javajdk1.6.0 Path=C:Javajdk1.6.0bintomcat版本 : 6.xtomcat路径 : F:apache-tomcat-6.0.20通过使用 Runtime.getRuntime().exec("cmd /C start F:\apache-tomcat-6.0.20\bin\startup.bat")命令调用tomcat 启动文件,无法成功 error: The CATALINA_HOME environment variable is not defined correctly This environment variable is needed to run this program却不清楚bat文件中应该修改哪些地方 startup.bat@echo offrem set JAVA_HOME=D:Program FilesJavajdk1.6.0_11;rem Licensed to the Apache Software Foundation (ASF) under one or morerem contributor license agreements. See the NOTICE file distributed withrem this work for additional information regarding copyright ownership.rem The ASF licenses this file to You under the Apache License, Version 2.0rem (the "License"); you may not use this file except in compliance withrem the License. You may obtain a copy of the License atremrem http://www.apache.org/licenses/LICENSE-2.0remrem Unless required by applicable law or agreed to in writing, softwarerem distributed under the License is distributed on an "AS IS" BASIS,rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.rem See the License for the specific language governing permissions andrem limitations under the License.if "%OS%" == "Windows_NT" setlocalrem ---------------------------------------------------------------------------rem Start script for the CATALINA Serverremrem $Id: startup.bat 562770 2007-08-04 22:13:58Z markt $rem ---------------------------------------------------------------------------rem Guess CATALINA_HOME if not definedset CURRENT_DIR=%cd%if not "%CATALINA_HOME%" == "" goto gotHomeset CATALINA_HOME=%CURRENT_DIR%if exist "%CATALINA_HOME%bincatalina.bat" goto okHomecd ..set CATALINA_HOME=%cd%cd %CURRENT_DIR%:gotHomeif exist "%CATALINA_HOME%bincatalina.bat" goto okHomeecho The CATALINA_HOME environment variable is not defined correctlyecho This environment variable is needed to run this programgoto end:okHomeset EXECUTABLE=%CATALINA_HOME%bincatalina.batrem Check that target executable existsif exist "%EXECUTABLE%" goto okExececho Cannot find %EXECUTABLE%echo This file is needed to run this programgoto end:okExecrem Get remaining unshifted command line arguments and save them in theset CMD_LINE_ARGS=:setArgsif ""%1""=="""" goto doneSetArgsset CMD_LINE_ARGS=%CMD_LINE_ARGS% %1shiftgoto setArgs:doneSetArgscall "%EXECUTABLE%" start %CMD_LINE_ARGS%:end
解决方案
这个可能是启动目录设置有问题,就是Runtime.getRuntime().exec,执行的时候的当前目录并不是tomcat的目录,我建议你要么手工设置一下%CATALINA_HOME%,要么就是调用这个exec(String command, String[] envp, File dir) 其中第三个参数设置为tomcat的目录即new File("F:'apache-tomcat-6.0.20")
解决方案二:
没有设置CATALINA_HOME环境变量吧。配置一个就应该可以解决问题了吧
解决方案三:
当然..上面要new File("F:\'apache-tomcat-6.0.20")