Я пытаюсь вызвать программу Fortran 90
из программы java
,
Моя программа 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
Что работает с компилятором Fortran. И, наконец, я получил файл exe, который выполнит и даст результат fortran. Я пытаюсь назвать это из моей java-программы, Моя программа java выглядит следующим образом:
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. В этом случае мне хотелось бы:
Почему он не работает. Пожалуйста, помогите мне. Как я мог правильно прочитать это exe
из моей программы java
. Любая помощь будет оценена!
Кажется, что вам нужно переадресовать потоки здесь, поэтому входной поток процесса выполнения fortran будет перенаправлен на System.in
и поток вывода на System.out
. Просто поставьте следующие строки:
pb.redirectInput(Redirect.INHERIT);
pb.redirectOutput(Redirect.INHERIT);
до pb.start()
.