验证码无法显示:Could not initialize class sun.awt.X11GraphicsEnvironment 解决方案

Tomcat 6007℃

Tomcat版本:7.0.75,运行方式:jsvc方式,现象:网站验证码无法打开,查看访问日志,提示信息如下:

八月 07, 2018 8:11:00 上午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [verifyCodeServlet] in context with path [] threw exception [Servlet execution threw an exception] with root cause
java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:195)
        ……

网上搜了下,大部分都是说未能启动或者无权读取X-Server功能,修改tomcat目录下bin目录里的catalina.sh文件:在类似-Djava.io.tmpdir=”\”$CATALINA_TMPDIR\”" \的后面添加一行:-Djava.awt.headless=true \。我在我的tomcat 7上找到了8处,都添加了,但是验证码还是没法用,访问依旧报错。

最后在bin目录里daemon.sh的JAVA_OPTS=”$JAVA_OPTS $LOGGING_MANAGER后面加上-Djava.awt.headless=true,重启tomcat,问题解决。估计网上方案是针对startup.sh方式启动tomcat。而我用的jsvc方式启动。

转载请注明:零五宝典 » 验证码无法显示:Could not initialize class sun.awt.X11GraphicsEnvironment 解决方案