我正在寻找一个有助于运行外部程序的 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/