2009-02-03 29 views
0

這是參考java.awt.HeadlessException問題 - Applet未顯示。 java.awt.HeadlessException - Applet not displayedjava.awt.HeadlessException - Applet不顯示 - 第2部分

在tomcat的startup.sh文件中添加「export DISPLAY =:0.0」後,HeadlessException消失了。現在,代碼的一部分運行在一個獨立服務器的批處理服務器上。代碼在批處理服務器上調用時發生相同的HeadlessException。當我在批處理服務器的啓動文件中添加相同的「export DISPLAY =:0.0」時,異常消失了,但它爲批處理服務器上運行的其他(非Java)應用程序創建了問題。這可能是因爲我們正在重寫正在爲其他應用程序工作的顯示器。

接下來,我將JAVA_OPTS =「 - Djava.awt.headless = true」導出到批處理服務器的啓動文件,但沒有起作用。我看到來自Sun的以下鏈接表示代碼應檢查無頭異常。

http://java.sun.com/j2se/1.4.2/docs/guide/awt/AWTChanges.html

所以纔會捕捉無頭例外,使其工作?像:

try { 

//Code that throws headless exception 

} catch (HeadlessException e) { 

    printStacktrace(); //basically do nothing 
} 

回答

2

你可以捕獲該異常,或者你可以先檢查避免它:

if (! java.awt.GraphicsEnvironment.isHeadless()) { 
    // code that throws headless exception 
} else { 
    log.info("Skipping GUI portion") 
} 

不要設置一臺服務器上的顯示,沒有人去看看,或者你可能最終會永遠等待某人在無法看到的對話框中單擊確定。