当前位置: 首页 > 面试题库 >

通过Java中的终端执行外部程序

屠晟睿
2023-03-14
问题内容

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

otter <proof.in >proof.out

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

问题是我需要Java提供此功能,因此在我的Java代码中执行以下操作:

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

但是在此行之后,整个用户界面被冻结,并且什么也没有发生,并且没有生成输出文件。

谁能告诉我我错了哪里?

在此先感谢Tamash


问题答案:

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

在这里,<proof.in>proof.out作为otter可执行文件的文字参数,而不是shell重定向。但是查看该工具的主页将无法正常工作:它需要标准输入,通常由重定向提供。

您需要通过外壳(最好使用流程构建器)启动此命令:

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

等等等

当然,您还应该确保该程序从正确的目录运行-幸运的是,ProcessBuilder还允许您执行此操作。



 类似资料:
  • 问题内容: 我有一个外部程序Otter,该程序将一些文件名作为参数并创建了一个输出文件,也将其指定为参数。因此,例如,如果我的输入是“ proof.in”,并且我希望将输出放置在“ proof.out”文件中,则可以在终端中运行以下命令: “ proof.in”文件必须与水獭可执行文件位于同一文件中。 问题是我需要Java提供此功能,因此在我的Java代码中执行以下操作: 但是在此行之后,整个用户

  • 问题内容: 我试图制作一个调用外部程序的应用程序,我必须传递两个参数。它没有任何错误。用c ++编写的program.exe可以拍照并修改txt文件的内容。Java程序可以运行,但是什么也没做 这是我的示例代码 问题答案: 从这里可耻地借来的

  • 问题内容: 我正在尝试从Java代码执行程序。这是我的代码: 我的操作系统是Mac OS X 10.6。 如果我从方法中删除,则所有文件名都将打印在控制台上。但是我需要将其打印到文件中。 另外,如果我将命令更改为: 并在Windows上运行,它也可以运行并在文件中完美打印结果。 我已经阅读了其他文章,以期从Java执行另一个应用程序,但似乎都与我的问题无关。 我会很感激我能得到的任何帮助。 谢谢,

  • ,而项目本身可以完美地运行eclipse IDE。 我尝试了相同问题的解决方案,但错误仍然存在。这是一个maven项目,pom.xml具有所有依赖项。 有人能帮我解决这个问题,或者建议一种通过eclipse IDE执行java-callgraph的方法来达到同样的目的吗?

  • 问题内容: 我一直在尝试将jar转换为exe。该程序-jar-使用蓝牙库“ Bluecove”,它是某个目录中的另一个jar。该程序还通常使用Java Swing 和东西。从Netbeans或Eclipse中运行时,该程序可以完美运行。现在是我部署它的时候了,因此我需要将其转换为exe。但是我一直无法获得最终的可执行文件来链接“ Bluecove”。我尝试了JSmooth和Launch4j,但是使

  • 我试图制作一个调用外部程序的应用程序,我必须传递两个参数。它没有给出任何错误。 ,用C编写,拍摄照片并修改