首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >初始化fortran exe

初始化fortran exe
EN

Stack Overflow用户
提问于 2013-09-06 09:35:15
回答 1查看 142关注 0票数 0

首先我想说的是,我不是一个程序员,只有一些基础知识。我正在用一些Java代码自动化一个用FORTRAN编写的模型。我想使用Java,这样我就可以潜在地将我的自动化与另一个用Java编程的小组执行的一些工作联系起来。我已经阅读了stackoverflow上的帖子有一段时间了,但是还没能让我的程序工作。我看到人们提到同时使用这两种方法:

代码语言:javascript
复制
Process p = Runtime.getRuntime().exec(cmd);

代码语言:javascript
复制
Process p = new ProcessBuilder(cmd).start(); 

使用Java运行可执行文件(请参阅下面的代码)。当我运行Java程序时,我没有得到任何错误;但是,模型还没有运行。在文件夹中双击它时,它运行良好,但在Java中不是这样。我还尝试了一些简单的方法,启动一个web浏览器,使用这两种方法都可以很好地工作。有人有什么建议吗?谢谢你的帮助。

代码语言:javascript
复制
public class Test {

    public static void main(String[] args) throws Exception {
        String[] cmd={"C:\\TxtInOut\\rev591_64rel"};
   //     Process p = Runtime.getRuntime().exec(cmd);
        Process p = new ProcessBuilder(cmd).start();
        p.waitFor();
      }
}  

我正在尝试将SWAT模型自动化,该模型主要是一个水文模型。我在过去尝试过使用文件扩展名(.exe),但是没有什么不同。在运行Reimeus建议的代码时,我得到了以下结果。(请参阅下面的代码)。

代码语言:javascript
复制
run:
forrtl: severe (24): end-of-file during read, unit 23, file C:\Users\Rachel\Documents\NetBeansProjects\Java21\file.cio

Image              PC                Routine            Line        Source             
rev591_64rel.exe   000007F7C1B28D7F  Unknown               Unknown  Unknown
rev591_64rel.exe   000007F7C1B24663  Unknown               Unknown  Unknown
rev591_64rel.exe   000007F7C1ABDF8F  Unknown               Unknown  Unknown
rev591_64rel.exe   000007F7C1AA4E68  Unknown               Unknown  Unknown
rev591_64rel.exe   000007F7C1AA3AA2  Unknown               Unknown  Unknown
rev591_64rel.exe   000007F7C1A776BD  Unknown               Unknown  Unknown
rev591_64rel.exe   000007F7C1949C26  Unknown               Unknown  Unknown
rev591_64rel.exe   000007F7C18B1BF7  Unknown               Unknown  Unknown
rev591_64rel.exe   000007F7C1B2C09C  Unknown               Unknown  Unknown
rev591_64rel.exe   000007F7C1AEF4D2  Unknown               Unknown  Unknown
rev591_64rel.exe   000007F7C1AEF3DE  Unknown               Unknown  Unknown
KERNEL32.DLL       000007FFD58D1832  Unknown               Unknown  Unknown
ntdll.dll          000007FFD81FD609  Unknown               Unknown  Unknown
BUILD SUCCESSFUL (total time: 0 seconds)

file.cio是我试图运行的模型的初始输入文件。在整个程序中还有许多其他的输入文件被调用。目前,我将所有模型输入文件都放在SWAT可执行文件所在的文件夹中,该可执行文件在手动启动模型时有效。在通过Java启动时,我需要做一些不同的事情吗?

代码语言:javascript
复制
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Test {

    public static void main(String[] args) throws Exception{
        String[] cmd={"C:\\TxtInOut\\rev591_64rel.exe"};
   //     Process p = Runtime.getRuntime().exec(cmd);
        Process p = new ProcessBuilder(cmd).start();
   //     p.waitFor();

    try (BufferedReader errorStream = new BufferedReader(new InputStreamReader(p.getErrorStream()))) {

    String line;
    while ((line = errorStream.readLine()) != null) {
        System.out.println(line);
    }

} catch (IOException e) {
    e.printStackTrace();

    }
}
}
EN

回答 1

Stack Overflow用户

发布于 2013-09-06 09:39:03

C:\\TxtInOut\\rev591_64rel看起来不像Windows的可执行文件(例如.exe.lnk) --它缺少文件扩展名。对于上述两个扩展,添加扩展并检查ErrorStream以查看Process p显示了哪些错误

代码语言:javascript
复制
Process p = new ProcessBuilder("C:\\TxtInOut\\rev591_64rel.lnk").start();

try (BufferedReader errorStream = 
        new BufferedReader(new InputStreamReader(p.getErrorStream()))) {

    String line;
    while ((line = errorStream.readLine()) != null) {
        System.out.println(line);
    }

} catch (IOException e) {
    e.printStackTrace();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18648526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档