我需要在Java的特定工作目录中执行命令行程序

时间:2012-05-14 00:06:46

标签: java command-line runtime execute

我需要执行带有2个参数的命令行程序。但是,它必须在工作目录中执行。即“command arg1 arg2”,而不是“c:\ folder \ subfolder \ command arg1 arg2”

从其他问题来看,我已经开始使用Runtime.exec(cmdArray,null,workingDirectory);但我一直得到“CreateProcess error = 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:\ Music \ New Folder \ zz Concatinate \ Clear_10”中):CreateProcess error = 2,系统找不到指定的文件

2 个答案:

答案 0 :(得分:4)

提供mp3wrap.exe的完整路径。

Java不使用PATH来查找mp3wrap。

- 评论后更新:

好的 - 重读这个问题,他问如何从目录中启动程序。如果程序需要它,则必须在此目录中启动Java程序。

您可能仍需要提供程序的整个路径,或者启动它以在当前目录中搜索它。我记得,在Windows中,总是搜索当前目录。其他系统在这里有所不同,所以你可以用一个点表示当前的dir,这也适用于Windows:“。/ mp3wrap”。

答案 1 :(得分:2)

或者,您可能想尝试使用ProcessBulder.start()。您可以设置env变量,工作目录以及要传递给由Process方法生成的start()的任何args。查看Java文档以获取示例调用。