用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();
}

解决方案 »

  1.   

    简单操作命令操作我试了,比如javac java 等命令都能输出结果
      

  2.   

    powershell 的一些命令
      

  3.   

    您如果在 cmd 运行,“命令”应该是“cmd”;
    您如果在 PowerShell 运行,“命令”应该是“PowerShell”;
    其它的通过参数传进去。
      

  4.   

     但是命令在cmd里执行可以啊,在程序里就不行了。在程序里执行有两种情况1、用p.getInputStream()的时候好像是执行成功了,但获取不到到命令执行成功后返回的流,在cmd执行成功后会返回一些信息的 2、用p.getErrorStream();的时候直接出现 CommandNotFoundException错误,
      

  5.   

    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()是获得返回的流................
      

  6.   

    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()是获得返回的流................
     现在就是获取不到返回的流,我知道Runtime.getRuntime().exec(cmd)才是执行命令啊
      

  7.   

    试试这样。。exec("cmd /k " + “命令”);
    这个exec和cmd不完全一样的。