java Runtime.getRuntime().exec(cmd)调用问题

去旅行吧 2015-08-12 09:28:18
用java的Runtime.getRuntime().exec(cmd)调用一个命令,该命令在cmd的窗口里执行没有问题,可以得到命令的输出结果,但是用Runtime.getRuntime().exec(cmd)方式调用却没有输出结果,关键输出代码:
reader = new BufferedReader(new InputStreamReader(p.getInputStream()));  
String line= null;
StringBuffer sb = new StringBuffer();
while ((line = reader.readLine()) != null) {
sb.append(line);
}

换成了,下面的代码执行找不到命令了,很奇怪,cmd里执行好好的!

Runtime rt = Runtime.getRuntime();
Process proc;
try {
proc = rt.exec("命令");
InputStream stderr = proc.getErrorStream();

InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("<error></error>");
while ( (line = br.readLine()) != null)
System.out.println(line);
System.out.println("");
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);

} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
...全文
613 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
遥寄三山 2017-10-16
  • 打赏
  • 举报
回复
你解决了不贴代码?不结帖?
去旅行吧 2015-08-17
  • 打赏
  • 举报
回复
已经解决了,换了个命令!不是代码的原因。
0萌萌哒0 2015-08-14
  • 打赏
  • 举报
回复
试试这样。。

exec("cmd /k " + “命令”);
这个exec和cmd不完全一样的。
rayw0ng 2015-08-13
  • 打赏
  • 举报
回复
您如果在 cmd 运行,“命令”应该是“cmd”; 您如果在 PowerShell 运行,“命令”应该是“PowerShell”; 其它的通过参数传进去。
wula0010 2015-08-13
  • 打赏
  • 举报
回复
肯定是你的命令的问题了,你都说了,简单的命令没有问题
去旅行吧 2015-08-13
  • 打赏
  • 举报
回复
引用 5 楼 dcxy0 的回复:
你要执行的是什么命令?是不是跟命令本身有关系呢?
powershell 的一些命令
JPF1024 2015-08-13
  • 打赏
  • 举报
回复
你要执行的是什么命令?是不是跟命令本身有关系呢?
去旅行吧 2015-08-13
  • 打赏
  • 举报
回复
简单操作命令操作我试了,比如javac java 等命令都能输出结果
去旅行吧 2015-08-13
  • 打赏
  • 举报
回复
引用 2 楼 rui888 的回复:
你先操作简单的命令试试看看。
引用 1 楼 loneking2001 的回复:
你的问题很奇怪啊,上面的代码没有输出是因为你没写输出的语句,下面的代码找不到命令是你的命令的名字真的是“命令”吗?
“命令”只是我一个随便写的一个 真正使用肯定不是“命令”,上面的代码我只贴了一部分,打印肯定有的!
tony4geek 2015-08-13
  • 打赏
  • 举报
回复
你先操作简单的命令试试看看。
rayw0ng 2015-08-13
  • 打赏
  • 举报
回复
你的问题很奇怪啊,上面的代码没有输出是因为你没写输出的语句,下面的代码找不到命令是你的命令的名字真的是“命令”吗?
去旅行吧 2015-08-13
  • 打赏
  • 举报
回复
引用 10 楼 wula0010 的回复:
引用 9 楼 xiaopeng187 的回复:
[quote=引用 7 楼 wula0010 的回复:] 肯定是你的命令的问题了,你都说了,简单的命令没有问题
但是命令在cmd里执行可以啊,在程序里就不行了。在程序里执行有两种情况1、用p.getInputStream()的时候好像是执行成功了,但获取不到到命令执行成功后返回的流,在cmd执行成功后会返回一些信息的 2、用p.getErrorStream();的时候直接出现 CommandNotFoundException错误,

Process child = Runtime.getRuntime().exec(cmd);
InputStream child_in = child.getInputStream();
String strReturn = "";

while ((c = child_in.read()) != -1) {
    strReturn += (char) c;
}
child_in.close();
你错了,Runtime.getRuntime().exec(cmd)这个才是执行命令,child.getInputStream()是获得返回的流................[/quote] 现在就是获取不到返回的流,我知道Runtime.getRuntime().exec(cmd)才是执行命令啊
wula0010 2015-08-13
  • 打赏
  • 举报
回复
引用 9 楼 xiaopeng187 的回复:
引用 7 楼 wula0010 的回复:
肯定是你的命令的问题了,你都说了,简单的命令没有问题
但是命令在cmd里执行可以啊,在程序里就不行了。在程序里执行有两种情况1、用p.getInputStream()的时候好像是执行成功了,但获取不到到命令执行成功后返回的流,在cmd执行成功后会返回一些信息的 2、用p.getErrorStream();的时候直接出现 CommandNotFoundException错误,

Process child = Runtime.getRuntime().exec(cmd);
InputStream child_in = child.getInputStream();
String strReturn = "";

while ((c = child_in.read()) != -1) {
    strReturn += (char) c;
}
child_in.close();
你错了,Runtime.getRuntime().exec(cmd)这个才是执行命令,child.getInputStream()是获得返回的流................
去旅行吧 2015-08-13
  • 打赏
  • 举报
回复
引用 7 楼 wula0010 的回复:
肯定是你的命令的问题了,你都说了,简单的命令没有问题
但是命令在cmd里执行可以啊,在程序里就不行了。在程序里执行有两种情况1、用p.getInputStream()的时候好像是执行成功了,但获取不到到命令执行成功后返回的流,在cmd执行成功后会返回一些信息的 2、用p.getErrorStream();的时候直接出现 CommandNotFoundException错误,

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧