linux tomcat验证码显示不了could not initialise class sun.awt.X11FontManager

一、概述

登录界面有显示验证码,测试环境是好的,但是部署到阿里云上面去后,二维码显示不出来了。报错信息:“java.lang.NoClassDefFoundError:could not initialise class sun.awt.X11FontManager”。

阿里云环境为:

服务器:suse linux 11 enterprise 64 ,1G内存

jdk: jdk1.8 32位

tomcat:tomcat 8.0

二、解决过程

网上搜了很多解决方案,有的说是启动时要加个jvm参数

-Djava.awt.headless=true
结果发现不行。

还有的说要去catalina.sh里面类似如下的地方都要带上这个jvm参数

 -classpath "\"$CLASSPATH\"" \
      -Dcatalina.base="\"$CATALINA_BASE\"" \
      -Dcatalina.home="\"$CATALINA_HOME\"" \
      -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
      -Djava.awt.headless=true \
结果还是不行。

后来在生成验证码的地方,手动加上了静态代码去设置这个参数

然后那个错误没了,取而代之的是另外一个错误:

"java.lang.UnsatisfiedLinkError:java8/jdk1.8.0-151/jre/lib/i386/libfontmanager.so libgcc_s.so.1:can not open shared object file:No such file or directory"

网上说是jdk版本不对,应该装64位。然后换成64位后,jvm起不来了!报错:

Error occurred during initialization of VM  
Could not allocate metaspace: 1073741824 bytes

应该内存不够,网上说export这个环境变量:

export _JAVA_OPTIONS=" -XX:-UseCompressedClassPointers "

于是在启动应用的脚本里面加了这句,结果还是不行。看来是内存太小,我买的是最普通的实例,只有1G内存,忍痛花了200多大洋升级到了2G内存,然后一切OK了!~如果是自己建的虚拟机,那把内存分配大一点应该就没问题了。


参考:

java8 linux启动报错

linux下验证码功能不能正常显示

jdk版本错误

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值