Calling fortran90 exe program from java is not executing

点点圈 提交于 2019-12-11 05:29:14

问题


I am trying to call Fortran 90 program from java program, My Fortran program is as follows:

 !sum.for
program Numbers_sum

  implicit none
  ! -----------------------------------------------Declare

  REAL :: a,b,sum


  ! -----------------------------------------------Input
  print*,"Enter first number..."
  read*, a
  print*,"Enter second number ..."
  read*, b
  ! -----------------------------------------------Compute
  sum = a+b
  ! -----------------------------------------------Output
  print*,"Sum =", sum
  end

Which is working on Fortran compiler. And finally I got an exe file which will execute and give fortran result. I am trying to call it from my java program, My java program as follows:

import java.io.File;
import java.io.InputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Sum {
    public static void main(String []args) {
        String filePath = "sum.exe";
    if (new File(filePath).exists()) {
    try {

        ProcessBuilder pb = new ProcessBuilder(filePath);
        pb.redirectError();
        Process p = pb.start();
        InputStream is = p.getInputStream();
        int value = -1;
        while ((value = is.read()) != -1) {
            System.out.print((char) value);
        }

        int exitCode = p.waitFor();

        System.out.println(filePath + " exited with " + exitCode);
    } catch (Exception e) {
        e.printStackTrace();
    }
} else {
    System.err.println(filePath + " does not exist");
}
    }
    }

But it is not working.

I am calling the java from my command prompt as follows:

But cursor blinking only. It is not working.

I did cntrl+c to escape from the java command prompt . That case I gott like the following:

Why it is not working. Please help me. How I could read that exe from my java program correctly. Any help will be appreciated!!


回答1:


Seems that you need to redirect streams here--so input stream of fortran execution process would be redirected to System.in and output stream to System.out. Just put the following lines:

pb.redirectInput(Redirect.INHERIT); 
pb.redirectOutput(Redirect.INHERIT); 

before pb.start().



来源:https://stackoverflow.com/questions/29771106/calling-fortran90-exe-program-from-java-is-not-executing

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!