技术分享 JAVA基础 查看内容

解决jcaptcha在linux环境下面不显示验证码的问题

老高 | 发布于 2022-07-19 14:54| 浏览()| 评论() | 收藏() | 点赞() | 打印

摘要: Tomcat中修改TOMCAT_HOME/bin/catalina.sh,在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:JAVA_OPTS="-server -Xms128m -Xmx256m -XX:MaxPermSize=256M -XX:PermSize=128M -Djava.awt.headless=true"

解决方式

1、tomcat

(1)需要在执行文件里面加上shell代码 unset DISPLAY

(2)Tomcat中修改TOMCAT_HOME/bin/catalina.sh,在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:JAVA_OPTS="-server -Xms128m -Xmx256m -XX:MaxPermSize=256M -XX:PermSize=128M -Djava.awt.headless=true"

(3)JAVA_OPTS=-Djava.awt.headless=true

2、resin

在resin中配置jvm参数。在httpd.sh中,找到args=这一行,然后添加args="-Djava.awt.headless=true"对于tomcat,则在-Dcatalina.home行下面添加-Djava.awt.headless=true每一行都要添加,总共有9行

什么是headless模式?

Headless是指服务器的无显示设备状态(缺少显示器、键盘、鼠标)

例:应用集群、数据库集群等,它们一般没有显示器、键盘、鼠标,都是通过网络远程操作。

AWT与headless模式

AWT是Java构建GUI应用的标准API接口,且Java自带2套实现类,一套供标准模式使用(显示设备、驱动可用),另一套供headless模式使用(显示设备、驱动不可用);

Button、Checkbox、Choice、Dialog、FileDialog、Label、List、Menu、MenuBar、MenuItem、PopupMenu、Scrollbar、ScrollPane、TextArea、TextField、Window

注:这些组件,只能运行在“标准模式”下,Headless模式中使用会报错;

Canvas、Fonts、Colors、Images

注:这些组件不仅在“标准模式”下可用,它们的Headless版本也可以在Headless模式下正常使用;

通常B/S型Web应用运行于无显示设备、驱动的服务器端环境中,但是有使用AWT绘图接口的可能(例如:用Images、Fonts接口生成图片验证码);所以给Tomcat、Weblogic附加参数-Djava.awt.headless=true,强制使用Headless版本的AWT实现类,就能避免图形环境缺失所导致的程序出错;


发表评论(对文章涉及的知识点还有疑问,可以在这里留言,老高看到后会及时回复的。)

表情