从java调用fortran90 exe程序未执行

从java调用fortran90 exe程序未执行,java,process,fortran,exe,Java,Process,Fortran,Exe,我正试图从java程序调用fortran90程序, 我的Fortran程序如下所示: !sum.for program Numbers_sum implicit none ! -----------------------------------------------Declare REAL :: a,b,sum ! -----------------------------------------------Input print*,"Enter first n

我正试图从
java
程序调用
fortran90
程序, 我的Fortran程序如下所示:

 !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
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");
}
    }
    }
它正在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
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,如下所示:

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

我做了
cntrl+c
以从java命令提示符中退出。在这种情况下,我不喜欢以下内容:


为什么它不起作用。请帮帮我。我如何能从我的
java
程序中正确读取
exe
。任何帮助都将不胜感激

似乎您需要在这里重定向流——所以fortran执行过程的输入流将重定向到
System.in
,输出流重定向到
System.out
。只需写以下几行:

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

pb.start()

之前,您的exe不是数字总和(或类似值)?还有,为什么要从Java调用exe?@Stultuske我需要从Java执行fortran程序。所以我创建了fortran可执行文件,并从java文件调用它。您单独运行fortran exe了吗?@Stultuske,是的。它正在工作@当我尝试运行它时,它不起作用。但是,当我尝试使用Control key+C进行转义时,它会部分执行exe文件,正如我的屏幕截图所示。请帮帮我,伙计,帮帮我!!