【问题标题】:How to invoke cmd commands in from a Java program in Windows?如何从 Windows 中的 Java 程序调用 cmd 命令?
【发布时间】:2016-03-05 12:49:06
【问题描述】:

我想创建一个可以编译和运行外部程序的应用程序。为此,我需要从命令提示符运行编译器命令(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 年微软公司。保留所有权利。

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

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

【问题讨论】:

标签: java cmd


【解决方案1】:
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 中也可以)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-23
    • 2020-06-14
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    • 2020-08-24
    相关资源
    最近更新 更多