我正在尝试使用java进程构建器执行.bat文件,但它不会启动该进程。请告诉我这里我做错了什么。当我用./file.sh
替换file.bat时,这段代码可以正常使用linux enwernmentfinal ArrayList<String> command = new ArrayList<String>();
command.add(WORKING_DIR+File.separator+"file.bat");
final ProcessBuilder builder = new ProcessBuilder(command);
try {
builder.redirectErrorStream(true);
builder.start();
} catch (IOException e) {
logger.error("Could not start process." ,e);
}
答案 0 :(得分:3)
数组中的第一个元素必须是可执行文件。因此,您必须调用cmd.exe才能调用批处理文件。
ProcessBuilder builder = new ProcessBuilder(Arrays.asList(new String[] {"cmd.exe", "/C", WORKING_DIR + File.separator + "file.bat"}));
答案 1 :(得分:1)
确保bat文件的路径正确。您可以使用调试器对其进行调试,也可以使用sysout来确定:
final ArrayList<String> command = new ArrayList<String>();
System.out.println("Batch file path : " + WORKING_DIR+File.separator+"file.bat")
command.add(WORKING_DIR+File.separator+"file.bat");
final ProcessBuilder builder = new ProcessBuilder(command);
try {
builder.redirectErrorStream(true);
builder.start();
} catch (IOException e) {
logger.error("Could not start process." ,e);
}