首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java中运行fortran exe

在java中运行fortran exe
EN

Stack Overflow用户
提问于 2012-06-26 16:06:38
回答 3查看 1.5K关注 0票数 1

尊敬的先生/女士,

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

我尝试的是,

代码语言:javascript
复制
 String cmd="fortranExe arg1 arg2";
 //fortranExe=exe path
 //arg1,arg2 are arguments to fortran executable program
 Process p=Runtime.getRuntime().exec(cmd); 

但是我没有得到output.When,我试图运行Linux命令,如ls,dir是否给了output.Is在java中运行fortran代码所需的任何东西?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-26 16:15:57

试着使用下面这样的东西

代码语言:javascript
复制
Process process = new ProcessBuilder("C:\\PathToExe\\fortran.exe","param1","param2").start();

这是从

Java Programming: call an exe from Java and passing parameters

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

票数 1
EN

Stack Overflow用户

发布于 2012-06-26 16:27:00

不,如果它是运行JVM的平台所需的二进制文件,那么这并不重要。

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

成功生成进程后,您可以像这样读取它的stdout:

代码语言:javascript
复制
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));

String line;
while ((line = br.readLine()) != null)
{
    System.out.println(line);
}
br.close();

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

编辑:通过查看其他注释,我可以看到您在二进制文件中使用了重定向的in/output。

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

下面的答案详细解释了这一点:

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

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

干杯,

票数 1
EN

Stack Overflow用户

发布于 2012-06-26 16:27:51

除了使用运行时,使用JNA将是一种更干净的方式。有关Fortran here的具体示例,请参阅。

您甚至可以直接从Java中调用Fortan程序的子例程之类的单独部分。JNA是,通常用于调用C/C++程序的,通常适用于这种类型的用例,我猜您的用例非常适合这里。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11203145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档