我正在开发一个Java应用程序,用于检查源文件中的补丁程序(是否存在)。 用于检测补丁程序更改的核心逻辑位于python脚本[titled'patch.py']中,并且我的Java应用程序与此Python补丁程序脚本进行通信以获取操作的退出状态。
python脚本可以从这里获得
在Windows中,它工作正常,但在Linux env中。 脚本本身不会被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环境中运行该应用程序,则该脚本将失败。
建议是受欢迎的!
注意:我可以独立运行'patch.py'脚本(在Linux终端中),但是当我尝试从Java应用程序中调用该脚本时,我将无法调用它,并且总是获得退出值'0'。