2011-05-10 94 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」允許我編譯。

這很難追查到。我不確定爲什麼沒有輸出。