在java中运行fortran exe

尊敬的先生/女士,

我有一个fortran exe,它接受一个输入文件并通过对输入文件进行一些操作来生成输出文件。我能够在linux终端中运行命令。(我认为fortran编译器可以在linux中使用)。现在请建议如何运行这个fortran可执行文件使用java(在Linux机器上)。

我的尝试是,

String cmd="fortranExe arg1 arg2"; //fortranExe=exe path //arg1,arg2 are arguments to fortran executable program Process p=Runtime.getRuntime().exec(cmd); 

但我没有得到输出。当我尝试运行Linux命令如ls时,dir正在提供输出。在java中运行fortran代码需要什么?

尝试使用这样的东西

 Process process = new ProcessBuilder("C:\\PathToExe\\fortran.exe","param1","param2").start(); 

得到了这个

Java编程:从Java调用exe并传递参数

有关ProcessBuilder的更多信息: http : //docs.oracle.com/javase/1.5.0/docs/api/java/lang/ProcessBuilder.html

不,如果它是您运行JVM的平台的reqular二进制文件,那应该没关系。

从控制台运行时,如何运行二进制文件?

成功生成进程后,您可以像这样读取它的标准输出:

 BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = br.readLine()) != null) { System.out.println(line); } br.close(); 

如果执行进程有任何运行时问题,例如没有运行二进制文件等的权限,则process.exitValue()将返回127。

编辑:看到其他评论,我可以看到你正在使用重定向/输出二进制文件。

所以实际上没有参数,但是你需要打开InputFileName.txt并使用process.getOutputStream()Object来写入你的进程。 无需设置OutputFilename.txt,因为您从InputStream读取输出,如果需要,可以自己将其写入文件。

这个答案详细解释了:

https://stackoverflow.com/a/3644288/435583

https://stackoverflow.com/a/6796053/435583

干杯,

除了使用Runtime之外,更简洁的方法是使用JNA 。 请在此处查看Fortran的具体示例。

您甚至可以直接从Java 调用 Fortan程序子程序中各个部分 。 JNA 通常用于调用C / C ++程序,通常适用于这种类型的用例,我想你的用例很适合。