2016-01-07 174 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

你應該詳細說明並不僅僅是提供一段代碼,以便更好地理解任何將閱讀此答案的人;) –