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

在运行时用Java执行.exe或.linux文件,java,linux,windows,runtime,executable,Java,Linux,Windows,Runtime,Executable,我试图在Java类中创建一个函数,该函数可以在运行时执行.exe或.linux文件。 该程序是espresso.exe(适用于Windows操作系统)和espresso.linux(适用于基于linux的系统) 通常,运行程序的方法是转到命令行,转到存储可执行文件的文件夹并键入: (在命令提示符中) 浓缩咖啡A0.txt>m.txt 或espresso A0.txt(以cmd格式返回输出) (在linux终端中) ./espresso.linux A0.txt>m.txt 或./espresso

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

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

(在命令提示符中)

浓缩咖啡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就足够了吗


提前谢谢

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


由于Java 7提供了一个仅限Java的解决方案来实现重定向:

您不能像这样执行标准输出重定向(因为“>”符号由OS shell解释),请参阅以下解决方案:


由于Java 7,所以有一个只使用Java的解决方案来实现重定向:

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


您使用
的方式只是另一个参数。
是一种shell语法。如果要将输出重定向到文件,则需要使用shell或自己读取输出并将其写入文件


使用
的方式只是另一个参数。

除非调用shell,否则不能使用“>something”之类的参数。除非调用shell,否则不能使用“>something”之类的参数。这些文件存储在Java项目源包的src/resources中。是否有一种方法可以捕获输出流。我在exec()或processbuilder()函数中提供的路径是否正确?这些文件存储在Java项目源程序包的src/resources中。是否有一种方法可以捕获输出流。另外,我在exec()或processbuilder()函数中提供的路径是否正确?我还可以使用命令espresso A0.txt或./espresso.linux A0.txt是否有方法从espresso中捕获通常显示在终端/cmd窗口中的输出流?@prashantvaidyana,这样您就可以使用Process.getOutputStream()获得输出。我也可以使用命令espresso A0.txt或./espresso.linux A0.txt是否有方法从espresso中捕获通常显示在终端/cmd窗口中的输出流?@prashantvaidyana,这样您就可以使用Process.getOutputStream()获得输出。