可以使用java中的ProcessBuilder执行本地命令或脚本等工作:
以下是一个简单的使用java调用本地python脚本的例子。从某工程代码中整理出来的,未封装,仅供参考。
- List<String> commands=new ArrayList();
- commands.add("python");
- commands.add(pkg);
- commands.add("--ad=test");
- //...其它参数添加
- processBuilder.command(commands);
- processBuilder.directory(path);//切换工作目录
- processBuilder.redirectErrorStream(true);
- Process process = processBuilder.start();
- StringBuilder result = new StringBuilder();
- final BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
- try {
- String line;
- while ((line = reader.readLine()) != null) {
- result.append(line);
- LOGGER.info(processBuilder.command().toString() + " --->: " + line);
- }
- } catch (IOException e) {
- LOGGER.warn("failed to read output from process", e);
- } finally {
- IOUtils.closeQuietly(reader);
- }
- process.waitFor();
- int exit = process.exitValue();
- if (exit != 0) {
- throw new IOException("failed to execute:" + processBuilder.command() + " with result:" + result);
- } else {
- return exit;
- }
附:
在JavaSE5之前使用Runtime的exec方法执行本地命令.在JavaSE5之后,可以使用ProcessBuilder执行本地命令.
一篇不错的介绍ProcessBuilder的文章:
http://www.cnblogs.com/taven/archive/2011/12/17/2291460.html
相关推荐
ProcessBuilder非阻塞是调用ProcessBuilder非阻塞是调用ProcessBuilder非阻塞是调用ProcessBuilder非阻塞是调用ProcessBuilder非阻塞是调用
深入研究java.lang.ProcessBuilder类
java 执行可执行文件,Runtime.exec、ProcessBuilder、commons-exec
奎因使用ProcessBuilder运行时在Java中进行非空查询-“计算机娱乐:自动复制自动机”让·米洛(Jean Millo),1972年基本上是在使用ProcessBuilder充当再现代理的全新概念上制作的。 该程序输出自己的源代码,并且...
一个简单的ProcessBuilder包装器 例子 公共类Md5sumCommand扩展了Command { @Override protected File directory() { return new File("."); } @Override protected String command() { return "md5sum...
主要介绍了Java如何基于ProcessBuilder类调用外部程序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
个人对于java.lang.ProcessBuilder的分析
这是我在国外网盘下载的,该版本是完整破解版,和Aspen plus 一样都是用于化工过程模拟及优化的软件, 用于大家学习交流,如果你要使用它用于发表论文或者商业目的,最好购买正版。 本人所在课题组有该软件正版授权,...
java调用shell向DataX传递参数,where条件,包含特殊字符。java调用shell向DataX传递参数,where条件,包含特殊字符
本文档介绍了如何在Java中使用ProcessBuilder类执行DOS命令。我们提供了详细的步骤说明,并附带一个简单的源码示例,演示如何使用Java代码删除文件。 内容概要 本文档涵盖以下内容: 使用Java代码执行DOS命令 使用...
本文档介绍了如何在Java中使用ProcessBuilder类执行DOS命令。我们提供了详细的步骤说明,并附带一个简单的源码示例,演示如何使用Java代码获取系统的网络配置信息。 内容概要 本文档涵盖以下内容: 使用Java代码...
本文档介绍了如何在Java中使用ProcessBuilder类执行ping命令,以检测主机的网络连通性。我们提供了详细的步骤说明,并附带一个简单的源码示例,演示如何使用Java代码执行ping命令并解析结果。 内容概要 本文档涵盖...
本文档介绍了如何在Java中使用ProcessBuilder类执行常用的DOS命令。我们提供了详细的步骤说明,并附带一个简单的源码示例,演示如何使用cd命令回到上级目录以及回到根目录。 内容概要 本文档涵盖以下内容: 回到...
6. processBuilder builder = new ProcessBuilder ( cmd ); 7. //设置一个路径 8. if ( workdirectory ! = null ) 9. builder.directory ( new File ( workdirectory ) ) ; 10. builder.redirectErrorStream...
此修订版和扩展版第二版包括ProcessBuilder、Flow Builder、闪电应用程序生成器、闪电螺栓解决方案等。无代码的实际Salesforce开发向您展示了如何解锁Salesforce平台的强大功能,以解决实际的业务问题。Salesforce...
at java.lang.ProcessBuilder.start(Unknown Source) at org.apache.hadoop.util.Shell.runCommand(Shell.java:482) 2:window10操作系统下面。hadoop-2.6.4版本,解决上面这个问题的必须两个文件。详细见博客:...
用户可以构造http://host/struts2-blank/example/X.action?action:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}链接,command goes here可以换成是破坏脚本的...
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1010) at org.apache.hadoop.util.Shell.runCommand(Shell.java:482) at org.apache.hadoop.util.Shell.run(Shell.java:455) at org.apache.hadoop....
与ProcessBuilder操作类似 智能修正运行错误,解决运行故障 一键化的启动与取消操作,自由控制 可同步与异步方式执行,可回调事件 ...
目录 第1章 lambda表达式 0 1.1 为什么要使用lambda表达式 2 1.2 lambda表达式的语法 4 1.3 函数式接口 6 ...9.5.4 ProcessBuilder 205 9.5.5 URLClassLoader 206 9.5.6 BitSet 206 练习 207 索引 209