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

Posted 北方客888

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了验证码无法显示:Could not initialize class sun.awt.X11GraphicsEnvironment 解决方案相关的知识,希望对你有一定的参考价值。

一、原因现象:图下图

二、原因导致:

  经过Google发现很多人也出现同样的问题。从了解了X11GraphicEnvironment这个类的功能入手,一个Java服务器来处理图片的API基本上是需要运行一个X-server以便能使用AWT(Abstract Window Toolkit,抽象窗口工具集)。所以,问题肯定出在启动server时,未能实现X-Server功能。root用户未启动XServer,mmcse中启动了XWindow。so问题来了。

三、解决方法:

  1. 安装XServer(忽略,因为服务器本身软硬件环境基本没动过);

  2. 运行headless服务器-Djava.awt.headless=true (需要JDK1.4以上版本)。重点来看这种解决方案(详见参考资料,但主要涉及的是Webapp,设置webserver。我们的场景是在applet client作图,然后在server端处理成png并保存)

     具体解决办法:在各个server服务的java -jar启动命令增加选项-Djava.awt.headless=true,问题解决(Google是王道)!!

     如果是在web server中,则在server的启动脚本中增加相同选项。

linux如下:

 

四、参考资料

1. linux中servlet画图问题的解决 

2. Java官网的headless support

3. java.awt.headless=true的含义

以上是关于验证码无法显示:Could not initialize class sun.awt.X11GraphicsEnvironment 解决方案的主要内容,如果未能解决你的问题,请参考以下文章

Linux下java验证码不显示:Could not initialize class sun.awt.X11FontManager

POI 导出Exicel, 报Could not initialize class sun.awt.X11FontManager错误

Could not initialize class sun.awt.X11GraphicsEnvironment

关于使用Xshell远程连接启动tomcat导致图片不显示,报错Could not initialize class sun.awt.X11GraphicsEnvironment解决方案

Could not initialize class org.apache.xpath...

求助Creo Parametric 3.0 M110中打开时闪退,错误日志中显示error: could not initialize commn layer