在运行时在Java中执行.exe或.linux文件

时间:2013-11-01 21:41:02

标签: java linux windows runtime executable

我正在尝试在Java类中创建一个可以在运行时执行.exe或.linux文件的函数。 该程序是espresso.exe(适用于Windows操作系统)和espresso.linux(基于Linux的系统)

通常,运行程序的方法是转到命令行,然后转到存储可执行文件的文件夹并输入:

(在命令提示符中)

espresso A0.txt> m.txt

或espresso A0.txt(以cmd返回输出)

(在linux终端中)

./ espresso.linux A0.txt> m.txt

或./espresso.linux A0.txt(在终端窗口中返回输出)

这里A0.txt是输入参数,m.txt是espresso创建的文件。

我已将A0.txt和espresso.linux以及espresso.exe存储在src / resources文件夹下

我尝试了以下内容:

 ProcessBuilder pb = new ProcessBuilder("./src/resources/espresso.exe","src/resources/A0.txt",">src/resources/m.txt");
 try {
        Process p = pb.start();
 }catch (IOException ex) {
        Logger.getLogger(NetSynth.class.getName()).log(Level.SEVERE, null, ex);
 }

我也尝试过:

Runtime rt = Runtime.getRuntime();
Process p = rt.exec("src/resources/espresso.linux src/resources/A0.txt > src/resources/m.txt");
int waitFor = p.waitFor();

它们都无法识别要执行的文件,也不会运行该命令。我知道这两种方法可能有很多错误。我可以使用一些帮助来弄清楚要运行可执行文件的方法和代码。

此外,是否有提到运行espresso.linux的路径? /src/resources/espresso.linux会不会?

提前致谢。

2 个答案:

答案 0 :(得分:2)

您不能像这样执行标准输出重定向(因为“>”符号由OS shell解释),请参阅此答案以获得有效的解决方案:ProcessBuilder redirecting output

自Java 7以来,为了实现重定向,只有一个Java解决方案:http://tamanmohamed.blogspot.co.at/2012/06/jdk7-processbuilder-and-how-redirecting.html

答案 1 :(得分:2)

>是一种shell语法。如果要将输出重定向到文件,则需要使用shell或读取输出并自行将其写入文件。

你使用>的方式只是另一个论点。