我曾经使用过这段代码,但是现在我知道程序找不到文件,但是文件在那里。
这是我的代码。我的项目在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
答案 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