我需要在Windows中运行shell命令:
c:\ Python27 \ python.exe c:\ probabilistic_cracker \ process.py dic2.txt
在命令shell中正常运行。
在Java中我这样做:
ProcessBuilder pb = new ProcessBuilder(Arrays.asList("c:\\Python27\\python", " c:\\probabilistic_cracker\\process.py"," dic2.txt"));
Process p = pb.start();
或者
ProcessBuilder pb = new ProcessBuilder("c:\\Python27\\python", " c:\\probabilistic_cracker\\process.py"," dic2.txt");
在两种情况下结果都是
c:\ Python27 \ python:无法打开文件' c:\ probabilistic_cracker \ process.py':[Errno 22]参数无效
答案 0 :(得分:0)
您的命令是正确构建的,但是将其传递给ProcessBuilder
的方式不是,如documentation中所述,您直接按照它们的方式传递args,因此无需添加空格ProcessBuilder将为您解决这个问题。
ProcessBuilder pb = new ProcessBuilder("c:\\Python27\\python", "c:\\probabilistic_cracker\\process.py","dic2.txt");
因此,只需删除每个参数字符串开头的空格即可。