调用外部程序的Java库

标签 java workflow external-process

我正在寻找一个有助于运行外部程序的 JAVA 库。现在,我在单独的线程中“手动”运行它们并捕获 I/O。

我有几个不同的外部工具要运行,我需要的是一种统一的方法来运行。我要处理的任务包括: - 根据预定义的模板准备输入文件 - 运行命令 - 等待结果并解析输出文件 - 维护管道

整个流水线可以看作是一个图,以外部工具为节点,以数据流为边。如果数据流允许,软件可以在并行线程中运行一些命令,那就太好了。

这些问题有现成的解决方案吗?

根据我得到的答案,我觉得我必须澄清:我不需要管道。数据流可以用文件解决,反正我需要。此外,管道必须是线性的(1 个输出 -> 1 个输入),但我需要一个图表

我已经有了一种 python 原型(prototype)——一堆脚本。这很好,但对我来说 - 不可扩展。此外,我调用的一些程序是用 java 编写的,所以用 java 编写整个程序会很方便。 最好的, 蒂姆

最佳答案

如果您使用的是 Unix,您是否考虑过动态构建 Unix shell 命令行(使用管道、重定向、tee 等),然后使用 ProcessBuilder 生成这个命令 或类似的,和(比如)/bin/sh -c ?

这意味着您正在利用现有的工作基础架构来处理管道、缓冲、错误收集和管理资源。

关于调用外部程序的Java库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4767560/

相关文章:

workflow - CQ5/AEM5.6 工作流程 : Access workflow instance properties from inside OR Split

java - 使用自定义参数运行外部程序

c++ - 在 C++ 中使用输出重定向调用外部程序的空文件输出

python:运行超时进程并捕获stdout、stderr和退出状态

Java文本字符串: Want Only One Word In Bold

java - 从 Netsuite 中保存的搜索中获取字段值为空

java - PreferenceFragment 的使用和架构

java - 这是原始包装类的正确用法吗?

git - Git 中的子模块、子树或其他依赖项?

hadoop - "no such file or directory"oozie 错误