2011-05-10 88 views
1

我想从使用org.apache.tools.ant.taskdefs.Javac的java程序编译java文件并在屏幕上打印它的输出。Ant Javac编译输出

请参见下面的代码片段供大家参考,

Javac javaCompile = (Javac) webServiceProject.createTask("javac"); 
javaCompile.setSrcdir("D:\\Java\\src"); 
javaCompile.setDestdir("D:\\Java\\classes"); 
try{ 
    javaCompile.execute(); 
}catch (BuildException buildException){ 
    FacesMessage message = new FacesMessage(buildException.getMessage()); 
    message.setSeverity(FacesMessage.SEVERITY_FATAL); 
    FacesContext.getCurrentInstance().addMessage(null, message); 
} 

当我编译的文件与上面的代码,如果存在任何编译错误,我得到一个消息"Compile failed; see the compiler error output for details."

我不知道如何检索编译错误并将其显示为屏幕上的输出。 任何人都可以建议如何检索它?

+6

您正在从JSF应用程序编译Java类吗?不要这样做:-)严重的是,如果你做了这样一件可怕的事情,你应该去掉你的图层。使用编译器不属于JSF应用程序应该了解的问题。 – 2011-05-10 11:27:35

回答

0

下面的代码做到了这一点,这让我感到编译器错误。

Javac javaCompile = (Javac) webServiceProject.createTask("javac"); 
javaCompile.createCompilerArg().setValue("-Xstdout"); 
String filePath = basePath + "resources" + File.separator 
     + "errorlog.log"; 
javaCompile.createCompilerArg().setFile(new File(filePath)); 
javaCompile.setNowarn(true); 
0

忽视的你是否应该在JSF应用程序编译代码的问题...

我认为,蚂蚁将编译输出到记录器。因此,要掌握它,您需要配置记录器以将相关日志事件发送到文件...或其他东西。

0

尝试更改build.compiler设置。 Ant很难找到我指定的编译器,“org.eclipse.jdt.core.JDTCompilerAdapter” - 将其更改为“modern”允许我编译。

这很难追查到。我不确定为什么没有输出。