我正在开发一个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脚本 - 堆栈内存溢出...相关推荐

  1. java drawstring 字体_java - 为什么字体大小为101的Graphics2D.drawString字母“o”坏了? - 堆栈内存溢出...

    我想在png中绘制字符串. 我需要高达600像素的字母. 因此我尝试使用Graphics2D.drawString: String text = "o"; graphics.set ...

  2. java spark 读取json_apache-spark - 与aws-java-sdk链接时,在读取json文件时发生Spark崩溃 - 堆栈内存溢出...

    让config.json成为一个小的json文件: { "toto": 1 } 我做了一个简单的代码,用sc.textFile读取json文件(因为文件可以在S3,本地或HDFS上 ...

  3. linux运行时命令找不到,linux - 在运行Bash脚本时找不到命令,但是在直接运行命令时有效 - 堆栈内存溢出...

    我一直在使用letencrypt为我的网站生成SSL证书,更具体地说是letencrypt_webfaction. 当我在项目中运行此命令时,它可以工作 letsencrypt_webfaction ...

  4. java从端口接收数据_java - Java中通过串行端口接收数据的效率更高 - 堆栈内存溢出...

    这是代码片段 我在这里启动一个动作监听器 try { port_seleted.addEventListener(this); } catch (TooManyListenersException e ...

  5. java获取excel文件第一行_java - 在Java中读取Excel文件,但第一行除外 - 堆栈内存溢出...

    我正在尝试从使用xlsx文件的JasperReport模板自动创建报告,我用来从excel文件读取的方法是这样的: String[] columnNames = new String[]{" ...

  6. arcgis怎么用python重新排序_python - 根据排序数据添加新的顺序ID号(ArcGIS) - 堆栈内存溢出...

    我需要一行代码,它将根据我为数据规定的顺序发出新的顺序ID. 基本上,在按照我的喜好对数据进行排序后,原始的Object_Id对我来说不再是有意义的顺序. 在我的表中,我创建了一个新字段(短整数). ...

  7. linux 段大小,linux - 在套接字上的Linux中减少TCP最大段大小(MSS) - 堆栈内存溢出...

    在一个特殊的应用程序中,我们的服务器需要更新资源不足的传感器/跟踪设备的固件,我们遇到了一个问题,即有时会在接收新固件数据包的远程设备(客户端)中丢失数据. 连接是GPRS网络上的TCP / IP. ...

  8. Android消息向下堆积,android - 从CoordinatorLayout中的按钮单击事件触发NestedScroll折叠动作 - 堆栈内存溢出...

    我有一个CoordinatorLayout,它包含一个ViewPager,该控件使用嵌套的滚动行为可以正常滚动. 但是,我想在单击按钮时触发滚动/折叠行为. 如何通过单击按钮来控制这种崩溃行为. 通过 ...

  9. python合并数组输出重复项_python - 不同数组项的所有可能组合[重复] - 堆栈内存溢出...

    您需要笛卡尔积 . >>> arrays = [ ... [[1, 2], [3, 4]], ... [[4, 5], [5, 6]], ... [[7, 8], [8, 9]], ...

最新文章

  1. php 导出excel 特殊字符,export 导出的excel sheet名字包含特殊字符
  2. DL_WITH_PY系统学习(第2章)
  3. daterangepicker java_日期选择插件Date Range Picker
  4. 我和小美的撸码日记(1)之软件也需靠脸吃饭,带您做张明星脸(附后台经典框架 DEMO 下载)...
  5. 权限管理(1):简介
  6. ASP.NET 导入 Excel
  7. CentOS6.7 mysql 主从配置
  8. Office默认打开方式的改变方法以及安装程序莫名启动问题的权威汇总
  9. JavaScript代理_ES6新增
  10. 技术译文 | MySQL 8 需要多大的 innodb_buffer_pool_instances 值(上)
  11. edi许可证和ICP区别
  12. NOTION 换深色背景 黑色背景
  13. 万能Markdown数学公式
  14. 获取当前时间、获取当前月的第一天、获取当前年的第一天
  15. 16进制数组和ASK码字符之间的转换
  16. java调用R语言传参数时,RserveException: eval failed Syntax error
  17. Moodle专题网站链接
  18. Springboot 系列(十三)使用邮件服务
  19. 图像配准(Image Registration)——深度学习方法
  20. 测试软件下载安装整理

热门文章

  1. dann的alpha torch_一图解密AlphaZero(附Pytorch实践)
  2. dbda.class.php 下载,DBDA
  3. Python6种创建字典的方式
  4. python filter()和reduce()函数用法详解
  5. python取当前时间前后一定间隔的时间点
  6. python functools模块(主要是为函数式编程而设计,用于增强函数功能,主要为可调用对象(callable objects)定义高阶函数或操作)
  7. 尝试修改LabelImg,将以对顶角画框改成以对角线相交点向四周画框
  8. python list()函数 (从可迭代对象返回初始化的新列表)
  9. PtQt4标准对话框——QFileDialog
  10. Atom + Texlive 配置