从Java程序执行bat文件时找不到文件

时间:2019-02-12 18:36:23

标签: java

我曾经使用过这段代码,但是现在我知道程序找不到文件,但是文件在那里。

这是我的代码。我的项目在C:\Users\user\git\project中,而apps文件夹在C:\Users\user\git\apps\folder中。

        ProcessBuilder pb = null;
       pb = new ProcessBuilder("myApp.bat");                         
        pb.directory(newFile("C:\Users\user\git\project\..\apps\folder"));
        File log = new File("log");
        pb.redirectErrorStream(true);
        pb.redirectOutput(Redirect.appendTo(log));

        Process p = pb.start();
      assert pb.redirectInput() == Redirect.PIPE;
      assert pb.redirectOutput().file() == log;
      assert p.getInputStream().read() == -1;

我得到Cannot run program "myApp.bat" (in directory "C:\Users\user\git\project\..\apps\folder"): CreateProcess error=2, Can´t find file

1 个答案:

答案 0 :(得分:0)

您为bat文件指定了错误的文件夹路径。

您要指定

C:\Users\user\git\project\..\apps\folder

但是您说的是正确的文件夹为C:\Users\user\git\project\..\apps\folder

更改行

pb.directory(newFile("C:\Users\user\git\project\..\apps\folder"));

pb.directory(newFile("C:\Users\user\git\project\apps\folder"));

..是指目录更改。所以你的实际路径变成 C:\ Users \ user \ git \ apps \ folder而不是C:\ Users \ user \ git \ project \ apps \ folder