我正在开发一个Java应用程序来检查源文件中的补丁程序(如果有的话)。检测补丁更改的核心逻辑出现在python脚本中补丁.py']和我的Java应用程序与这个Python补丁脚本通信,以检索操作的退出状态。在
python脚本可以从here获得
在windows中,它运行得很好,但是在Linux环境下。脚本本身不会从Java应用程序调用。我不知道我哪里出错了。在
我使用'ProcessBuilder'调用python脚本,源代码如下:if (System.getProperty("os.name").indexOf("Windows") != -1) {
ArrayList command = new ArrayList();
//Cmd prompt will be launched, if platform is Windows.
command.add("cmd");
command.add("/c");
command.add("python");
command.add("lib/patch.py");
command.add("-d");
command.add(auxSrcFile);
command.add(diffFileLoc);
command.add("--revert"); // switch to revert the patch
pb = new ProcessBuilder(command);
} else {
ArrayList command = new ArrayList();
//xterm will be launched, if platform is Linux.
command.add("xterm");
command.add("-e");
command.add("python");
command.add("lib/patch.py");
command.add("-d");
command.add(auxSrcFile);
command.add(diffFileLoc);
command.add("--revert"); // switch to revert the patch
pb = new ProcessBuilder(command);
}
if (pb != null) {
p = pb.start();
if (p != null) {
p.waitFor();
}
}
int exitStatus = p.exitValue();
if(exitStatus == 1) {
System.out.println("...OK");
System.out.println(" ----Patch detected------");
} else {
System.out.println("...ERROR");
System.out.println(" ----Patch not found------");
}
如果在Windows中运行Java应用程序,python脚本将被正确调用,而在Linux环境中运行该应用程序时同样会失败。在
欢迎提出建议!!在
注意:我可以运行补丁.py'脚本独立(在Linux终端中),但是当我试图从Java应用程序调用相同的脚本时,我无法调用它,并且总是得到一个退出值'0'。在