我在java程序中想启动另一个由命令行输入的外部程序,那个外部可执行程序的功能是
不断向文件里写数据。程序是一个很成熟的开源软件(可是核心代码貌似没有)。
我按照常规runtime.getruntime().exec(command)运行后结果是那个程序只在开始运行
的时候写了一行数据,就再也不继续写数据了,而windows资源管理器中显示该进程始终是
存在的。
后来在网上看到有人遇到过相同的问题,但是没有解决。请教版里的大侠们,帮我向个
办法 。PS:在外部执行这个程序完全没问题。还有,当我强制terminate我的JAVA程序后
,那个一直挂起的程序居然才真正的执行了,汗!
不断向文件里写数据。程序是一个很成熟的开源软件(可是核心代码貌似没有)。
我按照常规runtime.getruntime().exec(command)运行后结果是那个程序只在开始运行
的时候写了一行数据,就再也不继续写数据了,而windows资源管理器中显示该进程始终是
存在的。
后来在网上看到有人遇到过相同的问题,但是没有解决。请教版里的大侠们,帮我向个
办法 。PS:在外部执行这个程序完全没问题。还有,当我强制terminate我的JAVA程序后
,那个一直挂起的程序居然才真正的执行了,汗!
解决方案 »
- 如何查看浏览器的运行情况?
- java处理visio的问题
- java做文件传输
- 分享下
- 请教:中文XP系统,怎么将Java编译器的提示Output设成英文?
- 菜鸟求助:如果要把一个Frame or JFrame关闭后放在状态栏的右下角该怎么弄啊
- 没参数程序怎么还能运行????????????????????????
- AWT套件中的Label对象有没有自动换行的功能。
- 一个简单的作业题,人家问我的,我不会,再问大家,非常感谢
- [100分]哪位大侠有jsp/servlet/javabean的编程规范?
- JAVA做出来的软件只能在装有JAVA虚拟机的电脑上运行吗?
- 关于Thread.dumpStack(),如何打印出JVM中所有活动线程的堆栈情况啊,类似于websphere的dump和javacore文件啊
用下面执行方法试一下。不行检查你的exe程序是否要输入或什么的。
public static String exec(String[] arrCmd,String strWorkingDirectory) {
Process process = null;
String strCmdResult = "";
BufferedReader bufReader = null;
StringBuffer sbCmd = new StringBuffer();
sbCmd.append("strWorkingDirectory="+strWorkingDirectory+"\n");
int iCmdCount = arrCmd.length;
for(int i=0;i<iCmdCount;i++) {
sbCmd.append("cmd["+i+"]="+arrCmd[i]+";");
} InputStream errIn=null;
OutputStream outS=null;
try {
if(strWorkingDirectory == null) {
process = Runtime.getRuntime().exec(arrCmd,null,null);
} else {
process = Runtime.getRuntime().exec(arrCmd,null,new File(strWorkingDirectory));
}
bufReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
errIn=process.getErrorStream();
outS=process.getOutputStream();
String strLine = null;
int iLine = 0;
while ((strLine = bufReader.readLine()) != null) {
if (iLine == 0) {
strCmdResult += strLine;
iLine++;
} else {
strCmdResult += "\n";
strCmdResult += strLine;
}
} process.waitFor();
} catch (Exception ignore) {
dMsg.warn("Execute Cmd error:"+sbCmd.toString(),ignore);
} finally {
if( bufReader!=null){
try {
bufReader.close();
}
catch (IOException ex) {
dMsg.warn(ex.getMessage());
}
}
if(errIn!=null){
try {
errIn.close();
}
catch (IOException ex1) {
dMsg.warn(ex1.getMessage());
}
}
if(outS!=null){
try {
outS.close();
}
catch (IOException ex1) {
dMsg.warn(ex1.getMessage());
}
}
if(process != null) {
process.destroy();
}
}
return strCmdResult.trim();
}
runtime.getruntime().exec(command)
被调用的程序会不会执行呢?