我正在尝试以下代码来编译带有Java程序的外部C程序
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public static void main(String[] args){
try{
Runtime rt=Runtime.getRuntime();
Process pr=rt.exec("cmd /c PATH=%PATH%;c:\\TC\\BIN");
pr=rt.exec("cmd /c c:\\TC\\BIN\\TCC.exe c:\\TC\\EXAMPLE.c");
pr=rt.exec("c:\\TC\\EXAMPLE.exe");
BufferedReader input=new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line=null;
while((line=input.readLine())!=null){
System.out.println(line);
}
int exitVal=pr.waitFor();
System.out.println("exited with error code "+exitVal);
}
catch(Exception e){
System.out.println(e.toString());
//e.printStackTrace();
}
}
}
但我得到了:
java.io.IOException:无法运行程序“c:\ TC \ EXAMPLE.exe”:CreateProcess error = 2,系统找不到指定的文件
编译过程不起作用,那么我还可以做些什么来编译我的C代码?
答案 0 :(得分:3)
请使用Processbuilder API,文档中有一个如何使用各种标志的示例。
答案 1 :(得分:1)
我认为您在有机会生成之前调用已编译的程序。 你应该等待电话:
pr=rt.exec("cmd /c c:\\TC\\BIN\\TCC.exe c:\\TC\\EXAMPLE.c");
在尝试调用编译输出之前完成。