【问题标题】:Running Executables From Java从 Java 运行可执行文件
【发布时间】:2014-06-03 12:28:07
【问题描述】:

我有一个外部可执行程序,我想在我的 java 程序中运行它。在它运行时,我需要一种方法来获取 .exe 正在输出的内容,以及一种将输入发送回 .exe 的方法。到目前为止,这是我想出来的:

public int run(){
    String cmdRun = "cmd C:\\Meister\\Student\\bin\\Student.exe";

    int returnCode = 1;
    try {
        Process p = Runtime.getRuntime().exec(cmdRun); // makes appropriate system call
        BufferedReader stdError = new BufferedReader(new
                                  InputStreamReader(p.getErrorStream()));
        BufferedReader stdInput = new BufferedReader(new
                                  InputStreamReader(p.getInputStream()));
        String s = null;

        // read any info from the attempted command
        while ((s = stdError.readLine()) != null){ returnCode = -1; break; }
        while ((s = stdInput.readLine()) != null){ System.out.println(s); }
        System.out.println("Finished with exit code " + p.waitFor());
    } catch (Exception e) {
        e.printStackTrace();
    }

    return returnCode;
}

我应该如何正确运行(1)程序,GET(2)程序输出,然后在必要时向程序发送(3)输入?

编辑:顺便说一句,当我运行上面看到的方法时,即使正在执行文件,我也看不到任何输出。

【问题讨论】:

    标签: java process cmd system-calls


    【解决方案1】:

    尝试创建一个文件来保存您希望 .exe 接收的输入,并创建另一个文件来保存 .exe 的输出,以便 java 程序可以读取它。

    如果这没有帮助,这里有一些链接有望:

    关于流程构建器的所有信息: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ProcessBuilder.html

    我在搜索了一会儿时也发现了这个:

    java runtime.getruntime() getting output from executing a command line program

    【讨论】:

    • 这并不能真正回答我的问题。我正在寻找一种从Process 捕获输出的方法以及一种向程序发送消息的方法。
    猜你喜欢
    • 2013-08-27
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    相关资源
    最近更新 更多