无法从Java执行文件

时间:2013-05-30 15:28:18

标签: java execute

当我尝试使用此代码时,它似乎已执行但未执行。

进程构建器可以找到可执行文件。系统写入println命令。

我找到了一些示例代码,但我的可执行文件与java文件不在同一个文件夹中。

private static void executeOneFile(String folderPath) {
    Process p;
    String exePath = path + "\\" + folderPath + "\\";
    try {
        p = new ProcessBuilder(exePath +  "myFile.exe").start();
        //p = Runtime.getRuntime().exec("myFile.exe", null , new File(exePath) );

        System.out.println("p is running");
        p.waitFor();
        System.out.println("p ended");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

1 个答案:

答案 0 :(得分:1)

上述代码存在以下几个问题:

  1. 您没有正确处理stdin / stdout。因此,可能存在错误,但您不会看到它,因为您没有读取子进程的输出。
  2. 接下来,最好用stdin关闭孩子的p.getOutputStream().close()以确保它不会等待输入。
  3. 最后,该进程的当前目录与Java VM的目录相同。因此,如果您使用相对路径来编写文件,它将最终到达某个地方,但很少会在您期望的地方。将文件的绝对路径传递给子进程,以确保输出到达应有的位置。