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'。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值