从 java 调用 fortran90 exe 程序未执行
Calling fortran90 exe program from java is not executing
我正在尝试从 java
程序调用 Fortran 90
程序,
我的 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 命令提示符。那种情况我得到如下:
为什么它不起作用。请帮我。我如何从我的 java
程序中正确读取 exe
。任何帮助将不胜感激!!
似乎您需要在此处重定向流——因此 fortran 执行过程的输入流将被重定向到 System.in
,输出流将被重定向到 System.out
。只需输入以下几行:
pb.redirectInput(Redirect.INHERIT);
pb.redirectOutput(Redirect.INHERIT);
在 pb.start()
.
之前
我正在尝试从 java
程序调用 Fortran 90
程序,
我的 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 命令提示符。那种情况我得到如下:
为什么它不起作用。请帮我。我如何从我的 java
程序中正确读取 exe
。任何帮助将不胜感激!!
似乎您需要在此处重定向流——因此 fortran 执行过程的输入流将被重定向到 System.in
,输出流将被重定向到 System.out
。只需输入以下几行:
pb.redirectInput(Redirect.INHERIT);
pb.redirectOutput(Redirect.INHERIT);
在 pb.start()
.