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

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方式启动。

购买本主题
添加QQ号:703328210咨询购买具体信息。

作者头像
Zblog屋创始人

本主题是一套风格鲜明的主题,适合做SEO,简介易于操作,上手很快。

上一篇: CentOS 7 使用yum进行安装Docker
下一篇: 解决Maven打包时,src/main/java目录下xml等资源文件没有打包进去问题

发表评论