linux系統 中Tomcat 報錯 Could not initialize class java.awt.image.BufferedImage

網站驗證碼忽然沒法顯示,並報以下錯誤。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

相關文章
相關標籤/搜索