2012-05-14 74 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文档。

相关问题