在运行时用Java执行.exe或.linux文件
我试图在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文件夹下 我尝试了以下方法:在运行时用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
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()获得输出。