我想创建一个可以编译和运行外部程序的应用程序。为此,我需要从命令提示符(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命令。
答案 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中也是如此)。