从java调用fortran90 exe程序没有执行

时间:2015-04-21 11:35:41

标签: java process fortran exe

我正在尝试从Fortran 90程序调用{​​{1}}程序, 我的Fortran程序如下:

java

哪个正在使用Fortran编译器。最后我得到了一个exe文件,它将执行并给出fortran结果。我试图从我的java程序中调用它, 我的java程序如下:

 !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

但它没有用。

我从命令提示符调用java,如下所示: image

但光标只是闪烁。它不起作用。

我做了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"); } } } 以逃避java命令提示符。那种情况我喜欢以下内容: image2

为什么它不起作用。请帮我。如何正确地从我的cntrl+c程序中读取exe。任何帮助将不胜感激!!

1 个答案:

答案 0 :(得分:2)

似乎您需要在此处重定向流 - 因此Fortran执行流程的输入流将重定向到System.in并输出流到System.out。只需输入以下内容:

pb.redirectInput(Redirect.INHERIT); 
pb.redirectOutput(Redirect.INHERIT); 
pb.start()之前