问题描述
在windows下正常运行的Web应用,部署到Linux服务器上时验证码无法显示。
解决方法
1、编辑Tomcat bin 目录下 catalina.sh
2、在Catalina.sh 添加
JAVA_OPTS="-server -Xms128m -Xmx256m -XX:MaxPermSize=256M -XX:PermSize=128M -Djava.awt.headless=true "
3、重启Tomcat,并刷新页面
原因分析
因为服务器没有连接显示设备和鼠标键盘,故Java程序默认的启动参数与Windows下的不同,故应当设置Djava.awt.headless=true这一属性,以适应服务器的相关环境。
什么是Djava.awt.headless
Djava.awt.headless是指Headless模式,Headless模式是系统的一种配置模式。在该模式下,系统缺少了显示设备、键盘或鼠标。
在该模式下,系统缺少了显示设备、键盘或鼠标。Headless模式虽然不是我们愿意见到的,但事实上我们却常常需要在该模式下工作,尤其是服务器端程序开发者。因为服务器(如提供Web服务的主机)往往可能缺少前述设备,但又需要使用他们提供的功能,生成相应的数据,以提供给客户端(如浏览器所在的配有相关的显示设备、键盘和鼠标的主机)。