`
jamaica1982
  • 浏览: 29968 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用Java中的ProcessBuilder调用外部程序

阅读更多
这两天由于在一个test case中需要进行以下步骤:
1. Instrument一些.class文件。
2. 运行经过instrumentation之后的.class文件。
3. 检查第2步中的运行结果。

所以需要使用Java去调用一个简单的命令行来完成第2步。
以前我依稀记得是要用Runtime的exec方法,但是...(忘记具体用法了 )
还好这一用法不是那么的冷僻,所以很容易通过Google找到了StackOverflow上面的2篇文章:

[1] http://stackoverflow.com/questions/615948/how-do-i-run-a-batch-file-from-my-java-application
[2] http://stackoverflow.com/questions/3643939/java-process-with-input-output-stream

按照这2个Thread里面讨论的方法,我成功的使用ProcessBuilder完成了任务。
需要提醒自己的是:
ProcessBuilder的构造函数接收List<String>或者String...,这里的用法类似于(至少看起来像)public static void main(String[] args)的那个args。
我一上来就直接把所有的参数都连接成了一整个String,如"cmd /C java -cp .;path1;path2 TestAll"。结果就是遇到了IOException: CreateProcess error=2。

在这里记录一下,以备后用

分享到:
评论

相关推荐

    Java如何基于ProcessBuilder类调用外部程序

    Java中的ProcessBuilder类提供了一种方便的方式来调用外部程序。通过ProcessBuilder类,可以轻松地执行外部命令,并获取其输出结果。在本文中,我们将详细介绍如何使用ProcessBuilder类来调用外部程序,并通过示例...

    Java调用外部程序命令

    在进行系统集成或自动化脚本编写时,经常需要从Java程序中调用外部程序或命令。这种需求常见于多种场景,例如远程服务管理、批处理操作等。本文将详细介绍如何使用Java来调用外部程序,并解决在这一过程中可能遇到的...

    用JAVA调用外部程序并截出程序运行结果

    本文将详细讲解如何使用Java调用外部程序以及如何捕获并处理程序的输出。 首先,`Runtime.getRuntime().exec()`方法是Java中最基础的调用外部程序的方式。它允许我们执行系统命令,并返回一个`Process`对象,通过该...

    用java 调用外部程序

    在Java中,调用外部程序的主要方法是使用`Runtime`类或`ProcessBuilder`类。`Runtime.getRuntime().exec()`方法是最常用的,它可以执行系统命令并返回一个`Process`对象,用于管理外部程序的生命周期。下面是一个...

    ProcessBuilder非阻塞是调用

    ProcessBuilder 非阻塞是调用是指在 Java 中使用 ProcessBuilder 类来执行外部命令或程序时,如何实现非阻塞调用。 在 Java 中,使用 ProcessBuilder 类可以执行外部命令或程序,例如执行系统命令、运行可执行文件...

    exchange/powershell,Java调用powershell开通邮箱

    - 掌握Java编程,特别是如何使用Java的`ProcessBuilder`或`Runtime.exec()`来执行外部命令。 - 熟悉网络编程,了解如何使用Socket进行进程间的通信。 - 熟悉权限管理和安全实践,因为这涉及到在Java应用中执行...

    使用JAVA调用应用程序.pdf

    使用 Runtime.exec() 方法可以调用外部应用程序,例如,我们可以使用以下代码来调用 Notepad++ 编辑器: ```java Runtime.getRuntime().exec("notepad++.exe"); ``` 这将打开 Notepad++ 编辑器,用户可以在其中编辑...

    java中调用控制台程序

    "java中调用控制台程序"这个主题就是关于如何在Java应用程序中调用控制台命令,比如Windows系统的CMD命令行或者在Linux环境中使用wget工具。在Java中,我们可以使用Runtime类或者ProcessBuilder类来实现这样的功能。...

    Java基于Runtime调用外部程序出现阻塞的解决方法

    在Java编程中,有时我们需要通过`Runtime`类或者`ProcessBuilder`类来调用外部程序,这在处理一些特定任务时非常有用,如文件转换、数据处理等。然而,在使用`Runtime.exec()`方法调用外部程序时,可能会遇到程序...

    Linux下Java中调用可执行程序

    在Linux环境下,Java程序可以通过Runtime类或者ProcessBuilder类来调用外部的可执行程序。这个过程通常涉及以下几个关键步骤: 1. **获取运行时环境**: 首先,你需要通过`Runtime.getRuntime()`方法创建一个...

    调用外部程序

    在IT领域,调用外部程序是一项常见的操作,它允许我们从一个应用程序中启动另一个应用程序或者与之交互。这种技术在很多场景下都有应用,比如数据分析、自动化任务执行、系统管理等。下面我们将深入探讨如何调用外部...

    java中调用本地exe文件

    如果需要向外部程序传递参数,可以在`exec`方法中使用字符串数组形式。 ```java String[] cmd = { "cmd.exe", "/c", "dir C:\\Windows" }; Process p = Runtime.getRuntime().exec(cmd); ``` 这里我们使用了`cmd....

    java调用openssl生成证书

    在Java中调用OpenSSL,我们需要了解如何在Java程序中执行系统命令,这通常通过`Runtime.getRuntime().exec()`或`ProcessBuilder`类来实现。 以下是生成证书的基本步骤: 1. **生成私钥**:使用`openssl genpkey`...

    使用java调用windows WIN脚本

    // 使用ProcessBuilder调用批处理脚本 ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "myScript.bat"); pb.start(); ``` 在上述代码中,`cmd /c`是告诉命令解释器执行完指定的命令后退出,`start`用于在新...

    surfer二次开发-java调用exe

    在Java中,通常采用`ProcessBuilder`或`Runtime.exec()`方法来执行外部命令(即`sufercounter.exe`)。同时,为了传递参数和接收返回结果,可能需要使用输入输出流来与exe进程进行通信。例如,你可以将数据文件路径...

    用java程序调用ffmpeg执行视频文件格式转换flv

    在Java程序中,我们创建了一个名为`ConvertVideo`的类,该类包含两个主要方法:`process()`和`checkContentType()`。`checkContentType()`方法用于检查输入视频文件的类型,判断是否为FFmpeg可以直接处理的格式,如...

    java代码中调用linux/unix命令

    在Java编程中,有时我们需要与操作系统进行交互,执行一些系统级别的任务...了解如何正确地在Java代码中调用这些命令,有助于编写更高效、更灵活的程序。同时,要时刻注意安全性和性能优化,确保程序的稳定性和可靠性。

    java 调用windows的一些可执行文件

    4. **异常处理**:在调用外部程序时,可能会遇到找不到文件、权限问题等异常,需要进行适当的异常处理。例如,当命令执行失败时,`exec()`方法会抛出`IOException`。 5. **DatToWav.java**:根据提供的文件名,这...

    Java调用系统执行程序(OS Command)

    总的来说,Java通过`Runtime`和`ProcessBuilder`提供了一种强大的方式来调用系统命令和执行外部程序。然而,必须谨慎处理这些调用,以防止潜在的安全问题,并确保正确处理命令的输入、输出和错误流。在实际开发中,...

    windows下java调用ffmpeg视频处理环境搭建

    接着,了解Java如何调用外部程序。Java提供了`Runtime.getRuntime().exec()`方法或`ProcessBuilder`类来执行系统命令。例如,我们可以使用以下Java代码来执行一个简单的FFmpeg命令: ```java String command = ...

Global site tag (gtag.js) - Google Analytics