从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文件,正如我的屏幕截图所示。请帮帮我,伙计,帮帮我!!