linux下java调用python脚本,java - 在Linux Terminal中以编程方式从Java调用python脚本 - 堆栈内存溢出...
我正在開發一個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'。
總結
以上是生活随笔為你收集整理的linux下java调用python脚本,java - 在Linux Terminal中以编程方式从Java调用python脚本 - 堆栈内存溢出...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qemu debug linux内核,q
- 下一篇: ext3分区修复linux,linux