2012-05-14 102 views
2

我需要執行帶有2個參數的命令行程序。但是,它必須在工作目錄中執行。即「command arg1 arg2」,而不是「c:\ folder \ subfolder \ command arg1 arg2」我需要在Java的特定工作目錄中執行命令行程序

從這裏的其他問題,我已經開始使用Runtime.exec(cmdArray,null,workingDirectory);但我不斷收到「CreateProcess錯誤= 2,系統找不到指定的文件」。我已經檢查過了,路徑和文件都存在,所以我不知道發生了什麼問題。這是我正在使用的代碼。

String [] fileName = {"mp3wrap.exe", "Clear_10", "*.mp3"}; 
String dirName = "E:\\Music\\New Folder\\zz Concatinate\\Clear_10"; 
try { 
    Runtime rt = Runtime.getRuntime(); 
    Process pr = rt.exec(fileName, null, new File(dirName)); 
    BufferedReader input = new BufferedReader(new InputStreamReader 
     (pr.getInputStream())); 
    String line = null; 
    while ((line = input.readLine()) != null) { 
     System.out.println(line); 
    }//end while 
    int exitVal = pr.waitFor(); 
    System.out.println("Exited with error code " + exitVal); 
}//end try 
catch (Exception e) { 
    System.out.println(e.toString()); 
    e.printStackTrace(); 
}//end catch` 

我得到這個錯誤:

產生java.io.IOException:不能運行程序 「mp3wrap.exe」(目錄 「E:\音樂\新建文件夾\ ZZ Concatinate \ Clear_10」) :CreateProcess error = 2,系統找不到指定的文件

回答

4

給出mp3wrap.exe的整個路徑。

Java不使用PATH來查找mp3wrap。

- 評論後 更新:

好 - 重讀的問題,他問如何從目錄中啓動程序。如果程序需要它,你必須在這個目錄下啓動Java程序。

您可能仍然需要爲程序提供整個路徑,或者在當前目錄中指示搜索該程序。我記得,在Windows中,當前的目錄總是被搜索。其他系統在這裏有所不同,所以你可以用一個圓點表示當前目錄,這也適用於Windows。「./mp3wrap」。

+0

給全程?你可以詳細闡述一下嗎? – 2014-03-05 08:35:38

+0

@Zedai:在Windows'「C:\\ Programs \\ tools \\ audio \\ JoinTheParty \\ Player \\ mp3wrap.exe」「或類似的東西。例如,在Linux'「/ usr/local/bin/mp3wrap」中。 –

+1

重讀這個問題並延長我的答案。 –

2

或者,您可能要嘗試使用ProcessBulder.start()。您可以設置env變量,工作目錄以及任何想要傳遞給的參數,這些參數由start()方法產生。查看示例調用的Java文檔。

相關問題