Roo*_*kie 8 java batch-file processbuilder
快速连续的另一个问题,但这是一个我没有看到的非常明显的错误.我已经编写了一些代码来运行下面的批处理文件,但是我收到一条错误消息,说它无法找到该文件,但我可以向您保证该文件确实存在于该目录中!
public class Pull {
public void pullData() throws IOException {
ProcessBuilder pb = new ProcessBuilder("adb.bat");
File f = new File("C:\\");
pb.directory(f);
Process p = pb.start();
}
public static void main(String[] args) throws IOException {
Pull pull = new Pull();
pull.pullData();
}
Run Code Online (Sandbox Code Playgroud)
}
这是错误信息
Exception in thread "main" java.io.IOException: Cannot run program "adb.bat" (in directory "C:\"): CreateProcess error=2, The system cannot find the file specified
Run Code Online (Sandbox Code Playgroud)
Ash*_*Ash 11
我正在运行Linux,但是当我运行你的代码(修改为运行.sh而不是.bat)时会出现同样的错误.
尝试:
ProcessBuilder pb = new ProcessBuilder("c:\\adb.bat");
Run Code Online (Sandbox Code Playgroud)
显然,使用ProcessBuilder.directory
不影响工作目录(用于发现可执行文件的目的)构建的建设者时选择(至少,那是什么似乎发生.该文档说,这将改变工作目录,所以我想输入/输出文件可能是相对的?)
我不确定它在内部实际做了什么,但是在构造函数中提供可执行文件的路径可以解决问题.
这篇文章讨论了问题和这个解决方案,但也提出了是否必须设置环境变量,其中"路径"类变量可能有助于ProcessBuilder
发现可执行文件.