Runtime.exec不编译java文件

时间:2011-10-03 09:10:51

标签: java compilation runtime.exec

我通过Runtime.exec编译java文件(“javac MyFrog.java”); 它表示没有错误,不输出任何内容,但不会创建MyFrog.class文件。 如果我写Runtime.exec(“javac”),它输出输出一些帮助文本。 所以我理解该程序正在运行,但不创建类文件。权限还可以。

5 个答案:

答案 0 :(得分:2)

javac -verbose应该为您提供更多信息,特别是创建文件的目录。由于您能够识别没有任何参数的输出帮助文本,我假设您正在捕获进程的stderr并假设您也对stdout执行相同操作(尽管javac似乎没有向stdout写入任何内容)。

你在哪里检查是否存在.class文件?它与.java文件在同一目录中创建。如果MyFrog.java有一个包声明,它将在包sub-dir中创建 not ;因为你必须使用-d参数。

答案 1 :(得分:0)

确保工作目录中存在MyFrog.java

答案 2 :(得分:0)

尝试javac -verbose并确保您的类路径设置正确。

答案 3 :(得分:0)

您可以使用ProcessBuilder或Runtime.exec()方法创建新流程

String []cmd={"javac","Foo.java"};

Process proc=Runtime.getRuntime().exec(cmd);
proc.waitFor();

或使用ProcessBuilder

ProcessBuilder pb =  new ProcessBuilder("javac.exe","-verbose", "Foo.java");

pb.redirectErrorStream(true);
Process p = pb.start();
p.waitFor();

InputStream inp=p.getInputStream();
int no=inp.read();
while(no!=-1)
{
 System.out.print((char)no);
 no=inp.read();
} 

答案 4 :(得分:0)

我总是发现this资源回答了有关Java exec的所有问题。