可以使用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 非阻塞是调用是指在 Java 中使用 ProcessBuilder 类来执行外部命令或程序时,如何实现非阻塞调用。 在 Java 中,使用 ProcessBuilder 类可以执行外部命令或程序,...
Java中的`java.lang.ProcessBuilder`类是在J2SE 1.5版本中引入的,用于创建和管理操作系统的进程。这个类提供了比`java.lang.Process`更精细的控制,允许开发者指定启动进程的工作目录、环境变量以及错误和输出流的...
`ProcessBuilder`类用于创建操作系统进程,每个`ProcessBuilder`实例管理一系列进程属性,通过`start()`方法创建一个新的`Process`实例。 **代码示例** ```java import java.io.BufferedReader; import java.io....
Java如何基于ProcessBuilder类调用外部程序 Java中的ProcessBuilder类提供了一种方便的方式来调用外部程序。通过ProcessBuilder类,可以轻松地执行外部命令,并获取其输出结果。在本文中,我们将详细介绍如何使用...
### Java中的ProcessBuilder类详解 #### 一、概述 `ProcessBuilder`是Java的一个核心类,位于`java.lang`包下,主要用于创建操作系统进程。它允许用户通过一系列配置(如命令行参数、环境变量等)来启动外部程序,...
奎因使用ProcessBuilder运行时在Java中进行非空查询-“计算机娱乐:自动复制自动机”让·米洛(Jean Millo),1972年基本上是在使用ProcessBuilder充当再现代理的全新概念上制作的。 该程序输出自己的源代码,并且...
一个简单的ProcessBuilder包装器 例子 公共类Md5sumCommand扩展了Command { @Override protected File directory() { return new File("."); } @Override protected String command() { return "md5sum...
在Java中,我们可以使用Runtime类或ProcessBuilder类来执行系统命令。例如,我们可以创建一个方法,将FFmpeg的命令字符串化,然后通过这些类执行: ```java public void executeFFmpegCommand(String command) { ...
- 掌握Java编程,特别是如何使用Java的`ProcessBuilder`或`Runtime.exec()`来执行外部命令。 - 熟悉网络编程,了解如何使用Socket进行进程间的通信。 - 熟悉权限管理和安全实践,因为这涉及到在Java应用中执行...
2. **执行shell命令**:使用`Runtime.getRuntime().exec()`或`ProcessBuilder`来执行`ps`命令,获取系统进程列表。 3. **解析输出**:`ps`命令的输出是一个文本流,需要解析出与应用相关的行。每行通常包括PID...
这通常涉及到使用Java的`Runtime.exec()`或`ProcessBuilder`类来执行系统命令。例如,你可以创建一个包含`ffmpeg`命令的字符串数组,然后通过`ProcessBuilder`实例来执行。在执行过程中,你需要正确指定`ffmpeg`的...
在Java中调用shell脚本,可以使用Runtime类或ProcessBuilder类。例如,你可以创建一个shell脚本来执行DataX的同步任务,并将where条件作为参数传递。当条件包含特殊字符(如单引号 `'`、双引号 `"`、反斜杠 `\` 或者...
Forker 是一个 Java 库,可让您更好地控制外部进程并提供 ProcessBuilder 的替代品。 该库基本上有 3 个主要组件: ForkerClient 替换 ProcessBuilder 只需构建一个进程,让 Forker 处理检查退出代码和重定向或捕获...
在Java编程环境中,有时我们需要与操作系统进行交互,例如调用Windows上的特定应用程序,这通常是通过Java的`Runtime`类或`ProcessBuilder`类来实现的。下面将详细讲解这两个类如何帮助我们完成这一任务。 首先,`...
在Windows环境下,Java提供了一个叫做`java.lang.ProcessBuilder`的类,使得我们能够方便地实现这一功能。这个类允许开发者构建一个命令行进程,并且执行该进程,获取其输出结果。 首先,我们要了解`ProcessBuilder...
这是我在国外网盘下载的,该版本是完整破解版,和Aspen plus 一样都是用于化工过程模拟及优化的软件, 用于大家学习交流,如果你要使用它用于发表论文或者商业目的,最好购买正版。 本人所在课题组有该软件正版授权,...
ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "start", "/b", "D:\\test.bat"); pb.redirectErrorStream(true); // 合并标准输出和错误输出 Process process = pb.start(); BufferedReader reader = ...
2. **使用ProcessBuilder**:`ProcessBuilder`提供了更灵活的方式来构建和执行命令,可以更好地控制命令行参数的传递。例如,可以将每个参数作为一个独立的字符串添加到`ProcessBuilder`的命令列表中,避免了引号和...
ProcessBuilder pb = new ProcessBuilder("command"); Process p = pb.start(); ``` #### 三、常见问题及解决方案 **问题1:** 进程阻塞问题 当使用Java调用外部程序时,可能会遇到程序无法正常退出的情况,通常...
Java中提供了多种方式来调用命令行,包括使用Runtime.getRuntime().exec()方法、使用ProcessBuilder类、使用Apache Commons Exec库等。 在Java中,获取执行结果是指获取命令行执行的输出结果,用于分析执行结果、...