我面临以下错误:
java.io.IOException: Cannot run program "C:\abc\man\b\manu.bat C:\Users\12x\test\testFiles\abc.properties" (in directory "C:\Users\12x\test\testFiles\abc.properties"): CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048).
请找到我正在使用的代码:
public class TestProcess {
public TestProcess(Path workPath, Path exe, Path logbackConfig,
Path propertyfile) throws IOException {
String exeSuffix = "";
if (OS.indexOf("win") >= 0) {
exeSuffix = ".bat";
}
builder = new ProcessBuilder()
.directory(workPath.toFile())
.command(workPath.resolve(exe).toAbsolutePath().toString() + exeSuffix+ " " + propertyfile)
.redirectOutput(Redirect.INHERIT)
.redirectError(Redirect.INHERIT);
我的目标是运行一个bat文件(存在于C:\ abc \ man \ b文件夹中),然后是abc.properties(位于另一个文件夹C:\ Users \ 12x \ test \ testFiles中)。 / p>
在上面的代码中,workPath的值为
C:\abc\man\b
和propertyfile有
C:\Users\12x\test\testFiles
答案 0 :(得分:0)
您没有使用正确的语法:您不能在字符串中连接程序及其参数,因为ProcessBuilder不是解析器。
相反,构建一个名为propertyfile_path_string的String,该属性对应于属性文件,并用这一行替换你的行.command(...)
:
.command(workPath.resolve(exe).toAbsolutePath().toString() + exeSuffix, propertyfile_path_string)
答案 1 :(得分:-1)
您不能直接在Windows中exec()
.bat文件。您必须插入cmd /c
。