2016-01-07 125 views
0

我想从java程序执行下面的命令。无法执行来自java的命令

java -jar jarfile.jar -dir C:/MyDirectory -out C:/MyDirectory/example.html 

我试过以下,但其开放的命令提示符,但它不执行

Runtime rt = Runtime.getRuntime(); 
    try { 
     rt.exec(new String[] { "cmd.exe", "/c", "start" , "java -jar exampleJar.jar -dir C:\\MyDirectory -out C:\\MyDirectory\\exampleHtml.html" }); 

    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
+1

您应该考虑使用'ProcessBuilder'(http://stackoverflow.com/questions/10723346/why-should-avoid-using-runtime-exec-in-java) –

回答

2

我现在用的是下面这段代码和它的工作完美的下一个命令,ProcessBuilder用于创建操作系统进程和每个实例管理一组进程属性。 start()方法使用这些属性创建一个新的Process实例。可以重复调用具有相同实例start()方法的新子进程。

public void execute(String[] code){ 

     try{ 
      ProcessBuilder pb=new ProcessBuilder(code); 
      pb.redirectErrorStream(true); 
      Process process = pb.start(); 
      BufferedReader inStreamReader = new BufferedReader(new InputStreamReader(process.getInputStream())); 

      while(inStreamReader.readLine() != null){ 
       System.out.println(inStreamReader.readLine()); 
      } 
     } catch (IOException e) { 
      System.out.println(e.toString()); 
      e.printStackTrace(); 
      log.error(e.getMessage()); 
     } 
    } 
+2

你应该详细说明并不仅仅是提供一段代码,以便更好地理解任何将阅读此答案的人;) –