網站驗證碼忽然沒法顯示,並報以下錯誤。java
javax.servlet.ServletException: java.lang.NoClassDefFoundError: Could not initialize class java.awt.image.BufferedImage瀏覽器
網上搜索了一下,在catalina.sh里加上一句「-Djava.awt.headless=true \」,問題解決。
經查,出現這種狀況通常就是啓動tomcat的用戶沒法訪問Xserver,包括Xserver沒有啓動或者沒有權限訪問.tomcat
如下爲轉貼:服務器
1.什麼是Headless mode?
Headless模式是系統的一種配置模式。在該模式下,系統缺乏了顯示設備、鍵盤或鼠標。less
2.什麼時候使用和headless mode?
Headless模式雖然不是咱們願意見到的,但事實上咱們卻經常須要在該模式下工做,尤爲是服務器端程序開發者。由於服務器(如提供Web服務的主機)每每可能缺乏前述設備,但又須要使用他們提供的功能,生成相應的數據,以提供給客戶端(如瀏覽器所在的配有相關的顯示設備、鍵盤和鼠標的主機)。網站
3.如何使用和Headless mode?
通常是在程序開始激活headless模式,告訴程序,如今你要工做在Headless mode下,就不要期望硬件幫忙了,你得自力更生,依靠系統的計算能力模擬出這些特性來:
System.setProperty(「java.awt.headless」,」true」);spa
修改${TOMCAT_HOME}/bin/catalina.sh或${TOMCAT_HOME}/bin/catalina.bat文件: 在全部相似如下代碼: "$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \ -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \ -Djava.security.manager \ -Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \ -Dcatalina.base="$CATALINA_BASE" \ -Dcatalina.home="$CATALINA_HOME" \ -Djava.io.tmpdir="$CATALINA_TMPDIR" \
在尾部加上一句: -Djava.awt.headless=true \ 修改後內容以下: exec "$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \ -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \ -Dcatalina.base="$CATALINA_BASE" \ -Dcatalina.home="$CATALINA_HOME" \ -Djava.io.tmpdir="$CATALINA_TMPDIR" \ -Djava.awt.headless=true \
修改好後便可。code