大量的JAVA Web应用采用打包成war包,在tomcat容器运行的部署方式。登录界面常常采用验证码校验方式过滤机器登录攻击。但是在linux操作系统环境下部署的服务时常遇到验证码无法显示的问题。
这类JAVA应用通常采用AWT绘图生成验证码,调用java.awt.*包。AWT会调用操作系统本地窗口资源绘图,linux如果没有进到X Windows,AWT就无法绘图,并在后台报错(报错信息通常类似于java.awt.AWTError: Can't connect to X11 window server using ':0' as the value of the DISPLAY variable.)。Windows系统对此就支持得很好。
java.awt.Color;
java.awt.Font;
java.awt.Graphics2D;
java.awt.image.BufferedImage;
等程序用到的包都无法正常使用。后台报错信息如下:
java.awt.AWTError: Can't connect to X11 window server using ':0' as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:65)
at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:115)
at java.s