我正在寻找一个便于运行外部程序的JAVA库。现在我在一个单独的线程中“手动”运行它们并捕获I / O.
我有几种不同的外部工具可供运行,我需要的是统一的方法来实现这一点。我必须处理的任务包括: - 根据预定义的模板准备输入文件 - 运行命令 - 等待结果并解析输出文件 - 维护管道
可以将整个管道视为一个图表,其中外部工具作为节点,数据流作为边缘。如果数据流允许,如果软件可以在并行线程中运行某些命令,那将是很好的。
是否存在此类问题的现有解决方案?
根据我得到的答案,我觉得我必须澄清:我不需要管道。数据流可以用文件解决,无论如何我都需要。此外,管道必须是线性的(1输出 - > 1输入)但我需要图表
我已经在python中有一种原型 - 一堆脚本。它很好但是对我来说 - 不可扩展。此外,我调用的一些程序是在java中,因此在java中创建整个程序会很方便。 最好, 添
答案 0 :(得分:1)
如果您使用的是Unix,请考虑动态构建Unix shell命令行(使用管道,重定向,tee
等),然后使用ProcessBuilder
或类似命令关闭此命令,和(比方说)/bin/sh -c
?
这意味着您正在利用现有的工作基础架构来处理管道,缓冲,错误收集和管理资源。
答案 1 :(得分:1)
我认为ant应该是完美的。它还具有相当不错的java库来进行文件处理。在那之间,也许velocity templates,我认为你应该能够做你想做的事。