?? 近日,我們使用Jasperreport給用戶開發(fā)了一套報(bào)表系統(tǒng),使用的是PDF格式的報(bào)表,系統(tǒng)部署在RedHat Linux9上,在系統(tǒng)測(cè)試過程中,沒有發(fā)現(xiàn)任何問題。系統(tǒng)上線后,用戶發(fā)現(xiàn)報(bào)表無法使用,系統(tǒng)報(bào)出以下錯(cuò)誤:
?
javax.servlet.ServletException: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
?
??????經(jīng)過分析得知,該錯(cuò)誤是由于Jasperreport程序在轉(zhuǎn)換為PDF時(shí),采用了AWT方式,而AWT會(huì)調(diào)用操作系統(tǒng)本地窗口資源圖,由于我們測(cè)試時(shí),系統(tǒng)運(yùn)行在X window下,所以報(bào)表能夠正常運(yùn)行,而上線運(yùn)行后,由于考慮到系統(tǒng)的穩(wěn)定性,將系統(tǒng)運(yùn)行在文本界面下,導(dǎo)致了該問題。
????? 找到問題所在,就可以著手解決,解決的方法也很簡(jiǎn)單,就是讓JVM啟動(dòng)時(shí)不檢測(cè)圖形界面,由于我們是用的是Tomcat,所以在 /tomcat/bin/catalina.sh 中添加以下的啟動(dòng)參數(shù),即:
????? CATALINA_OPTS='-Djava.awt.headless=true'
?
????? 如果使用的不是Tomcat系統(tǒng),可在啟動(dòng)JVM的地方添加:
????? JAVA_OPTS='-Djava.awt.headless=true'
????? 然后重新啟動(dòng)Tomcat,問題解決。
?