gpt4 book ai didi

java - Java通过终端执行外部程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:01:18 24 4
gpt4 key购买 nike

我有一个外部程序 Otter获取一些文件名作为参数并创建一个输出文件,也指定为参数。因此,例如,如果我的输入是“proof.in”并且我希望我的输出被放置在“proof.out”文件中,我在终端中运行以下命令:

otter <proof.in >proof.out

“proof.in”文件必须与 otter 可执行文件位于同一文件中。

问题是我需要 Java 的这个功能,所以在我的 Java 代码中我执行以下操作:

java.lang.Runtime.getRuntime().exec("otter <proof.in >proof.out")

但是在这一行之后,整个 UI 被卡住,没有任何反应,也没有生成输出文件。

谁能告诉我哪里做错了?

提前致谢,塔玛什

最佳答案

这是正常的:您正在尝试启动通常由 shell 发出的命令。

在这里,<proof.in>proof.out被视为 otter 的文字参数可执行文件,而不是 shell 重定向。但是查看此工具的主页,它不会工作:它需要标准输入上的数据,而重定向通常会提供这些数据。

您需要通过 shell 启动此命令,最好使用进程构建器:

final ProcessBuilder pb = new ProcessBuilder("/bin/sh", "-c", "otter <proof.in >proof.out");
final Process p = pb.start();

等等等等

当然,您还应该确保程序从正确的目录运行——幸运的是,ProcessBuilder也允许您这样做。

关于java - Java通过终端执行外部程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8751337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com