如何从Windows中的Java程序调用cmd命令?

时间:2015-12-01 14:43:14

标签: java cmd

我想创建一个可以编译和运行外部程序的应用程序。为此,我需要从命令提示符(javac和gcc等命令)运行编译器命令。 我尝试了这里给出的方法 - Run cmd commands through java

这是我的代码

import java.io.*;

public class Main
{
    public static void main(String[] args) throws Exception
    {
        ProcessBuilder builder=new ProcessBuilder(
                "cmd.exe","javac F://Test.java","java -cp F:// Test");
        builder.redirectErrorStream(true);
        builder.start();
        Process p = builder.start();
        BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line;
        try
        {
            while (true)
            {
                line = r.readLine();
                if (line != null)
                System.out.println(line);
            }
        }
        catch(Exception e){}
    }
}

但是当我运行它时,它只执行第一个命令(cmd.exe),显示此输出:

Microsoft Windows [版本6.3.9600] (c)2013 Microsoft Corporation。保留所有权利。

然后它无限期地等待。我在这里做错了什么?

编辑 - 我的问题被确定为此问题的副本 - Start CMD by using ProcessBuilder。但我相信这个问题会询问如何从java代码启动cmd。我也需要我的程序来执行cmd命令。例如。我想在启动cmd进程后执行javac命令。

1 个答案:

答案 0 :(得分:0)

Process p = Runtime.getRuntime().exec("gcc ...");

https://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html#exec(java.lang.String)

您还应该阅读这篇文章:

Want to invoke a linux shell command from Java

其中大多数不是特定于Linux的。它包含有关如何处理标准错误或流重定向的有用信息(在Windows shell中也是如此)。