读书人

关于Runtime.getRuntime().exec(cmd);

发布时间: 2013-01-23 10:44:49 作者: rapoo

关于Runtime.getRuntime().exec(cmd);问题,请求大神帮忙解决,昨天一晚上没搞出来
1 需求,利用java程序重启tomcat
2 看程序
package com.idt.common;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Date;

public class TomcatReset {

public void TomcatShutDown(String Path1){

Runtime runtime = Runtime.getRuntime();

try {
Process process = runtime.exec(Path1);
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
String s;
boolean restart = false;
while ((s = in.readLine()) != null) {

restart = true;
break;

}
System.out.println("<" + new Date() + "> Tomcat is stop "
+ (restart ? "OK" : "ERROR"));
System.out.println("成功停止服务");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void TomcatStart(String Path2){
Runtime runtime = Runtime.getRuntime();
try {
Process process = runtime.exec(Path2);
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
String s;
boolean restart = false;
while ((s = in.readLine()) != null) {

restart = true;
break;

}
System.out.println("<" + new Date() + "> Tomcat is start "
+ (restart ? "OK" : "ERROR"));
System.out.println("成功启动服务");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
3 path1 是我传的路径="D:\\Tomcat6_dl\\bin\\shutdown.bat"
path2 是我传的路径="D:\\Tomcat6_dl\\bin\\startup.bat"

4 问题:当我执行完Process process = runtime.exec(Path1);这行代码的时候老是将我的MyEclipse本身自带的tomcat 服务关闭了,而我MyEclipse本身自带的服务是E盘下的,我用debug观察我传过来的路径没有错误确实是D盘下的,那为什么老是关闭我MyEclipse本身自带的服务,上网找了很多帖子都不管用,有的帖子是说Runtime.getRuntime().exec(cmd);执行完之后进行了死锁,所以老执行我之前配置的路径,很是郁闷,希望高手帮我解答下,不胜感激



cmd myeclipse tomcat path
[解决办法]
先关闭它,Process process = runtime.exec("cmd /c start C:\\apache-tomcat-6.0.35\\bin\\stutdown.bat");

再打开,你直接手开两个也一闪而过呢。
[解决办法]
D盘的tomcat开着,Process process = runtime.exec("cmd /c start D:XXX\stutdown.bat");这样关闭不了?你截图明明关闭的是E盘的。

读书人网 >Java Web开发

热点推荐