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

时间:2023-02-02 10:36:00

一、原因现象:图下图

验证码无法显示:Could not initialize class sun.awt.X11GraphicsEnvironment 解决方案验证码无法显示: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如下:

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


四、参考资料

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

2. Java官网的headless support

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