我在使用Runtime.getRuntime(),exec()执行tomcat的startup.bat,无法启动,出现如下错误:
Using CATALINA_BASE: "E:\Java\apache-tomcat-6.0.37"
Using CATALINA_HOME: "E:\Java\apache-tomcat-6.0.37"
Using CATALINA_TMPDIR: "E:\Java\apache-tomcat-6.0.37\temp"
Using JRE_HOME: "E:\Java\jdk1.6.0_26"
Using CLASSPATH: "E:\Java\apache-tomcat-6.0.37\bin\bootstrap.jar"
<ERROR>
系统找不到文件 -Djava.util.logging.config.file=E:\Java\apache-tomcat-6.0.37\conf\logging.properties。
但事实上E:\Java\apache-tomcat-6.0.37\conf\logging.properties文件存在的,不知道怎么回事?望各位童鞋能给我解惑!谢谢!
代码如下:
Runtime run = Runtime.getRuntime();//返回与当前 Java 应用程序相关的运行时对象
try {
String[] envp = { //环境变量设置
"JAVA_HOME=E:\\Java\\jdk1.6.0_26", //Ant
"CATALINA_HOME=E:\\Java\\apache-tomcat-6.0.37" //Tomcat
};
Process p = run.exec("E:\\Java\\apache-tomcat-6.0.37\\bin\\startup.bat", envp, new File("E:\\Java\\apache-tomcat-6.0.37"));// 启动另一个进程来执行命令
BufferedInputStream in = new BufferedInputStream(p.getInputStream());
BufferedReader inBr = new BufferedReader(new InputStreamReader(in));
//读取正常信息
String lineStr;
while ((lineStr = inBr.readLine()) != null)
//获得命令执行后在控制台的输出信息
System.out.println(lineStr);// 打印输出信息
//读取错误信息
InputStream stderr = p.getErrorStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("<ERROR>");
while ( (line = br.readLine()) != null)
System.out.println(line);
//检查命令是否执行失败。
if (p.waitFor() != 0) {
if (p.exitValue() == 1)//p.exitValue()==0表示正常结束,1:非正常结束
System.err.println("命令执行失败!");
}
inBr.close();
in.close();
} catch (Exception ev) {
ev.printStackTrace();
}
Using CATALINA_BASE: "E:\Java\apache-tomcat-6.0.37"
Using CATALINA_HOME: "E:\Java\apache-tomcat-6.0.37"
Using CATALINA_TMPDIR: "E:\Java\apache-tomcat-6.0.37\temp"
Using JRE_HOME: "E:\Java\jdk1.6.0_26"
Using CLASSPATH: "E:\Java\apache-tomcat-6.0.37\bin\bootstrap.jar"
<ERROR>
系统找不到文件 -Djava.util.logging.config.file=E:\Java\apache-tomcat-6.0.37\conf\logging.properties。
但事实上E:\Java\apache-tomcat-6.0.37\conf\logging.properties文件存在的,不知道怎么回事?望各位童鞋能给我解惑!谢谢!
代码如下:
Runtime run = Runtime.getRuntime();//返回与当前 Java 应用程序相关的运行时对象
try {
String[] envp = { //环境变量设置
"JAVA_HOME=E:\\Java\\jdk1.6.0_26", //Ant
"CATALINA_HOME=E:\\Java\\apache-tomcat-6.0.37" //Tomcat
};
Process p = run.exec("E:\\Java\\apache-tomcat-6.0.37\\bin\\startup.bat", envp, new File("E:\\Java\\apache-tomcat-6.0.37"));// 启动另一个进程来执行命令
BufferedInputStream in = new BufferedInputStream(p.getInputStream());
BufferedReader inBr = new BufferedReader(new InputStreamReader(in));
//读取正常信息
String lineStr;
while ((lineStr = inBr.readLine()) != null)
//获得命令执行后在控制台的输出信息
System.out.println(lineStr);// 打印输出信息
//读取错误信息
InputStream stderr = p.getErrorStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("<ERROR>");
while ( (line = br.readLine()) != null)
System.out.println(line);
//检查命令是否执行失败。
if (p.waitFor() != 0) {
if (p.exitValue() == 1)//p.exitValue()==0表示正常结束,1:非正常结束
System.err.println("命令执行失败!");
}
inBr.close();
in.close();
} catch (Exception ev) {
ev.printStackTrace();
}
用代码设置环境变量是这样的
-Djava.util.logging.config.file=D:\Tomcat-6.0.35\conf\logging.properties但用系统设置环境变量启动后是这样
-Djava.util.logging.config.file="D:\Tomcat-6.0.35\conf\logging.properties"我也不懂为什么
The CATALINA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
设置了,没用!