zuidaima8181的gravatar头像
zuidaima8181 2018-08-02 11:54:16
java项目部署在服务器后 验证码 或图片显示不出来的 异常 Could not initialize class sun.awt.X11FontManager

没项目第一次部署

打开登录页面

发现 验证码显示不出来

tomcat 报错提示

java项目部署在服务器后  验证码 或图片显示不出来的 异常 Could not initialize class sun.awt.X11FontManager

看起来不像是代码的问题 百度搜集 不外乎以下几种解决办法

1.什么是Headless mode? 
Headless模式是系统的一种配置模式。在该模式下,系统缺少了显示设备、键盘或鼠标。

2.何时使用和headless mode?
Headless模式虽然不是我们愿意见到的,但事实上我们却常常需要在该模式下工作,尤其是服务器端程序开发者。因为服务器(如提供Web服务的主机)往往可能缺少前述设备,但又需要使用他们提供的功能,生成相应的数据,以提供给客户端(如浏览器所在的配有相关的显示设备、键盘和鼠标的主机)。

3.如何使用和Headless mode?
一般是在程序开始激活headless模式,告诉程序,现在你要工作在Headless mode下,就不要指望硬件帮忙了,你得自力更生,依靠系统的计算能力模拟出这些特性来:

System.setProperty("java.awt.headless","true");

修改${TOMCAT_HOME}/bin/catalina.sh或${TOMCAT_HOME}/bin/catalina.bat文件:

在所有类似以下代码:
    "$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \
      -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
      -Djava.security.manager \
      -Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \
      -Dcatalina.base="$CATALINA_BASE" \
      -Dcatalina.home="$CATALINA_HOME" \
      -Djava.io.tmpdir="$CATALINA_TMPDIR" \

 

在尾部加上一句:
      -Djava.awt.headless=true \

修改后内容如下:
    exec "$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \
      -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
      -Dcatalina.base="$CATALINA_BASE" \
      -Dcatalina.home="$CATALINA_HOME" \
      -Djava.io.tmpdir="$CATALINA_TMPDIR" \
      -Djava.awt.headless=true \

试了一番 没有什么效果 于是请教了一位java 大牛

告知  检查一下 你系统的版本  jdk的版本

原来 linux 下的jdk 装的是 1.5的 angel

尴尬 一直以为装的是1.7的呢

好吧 换一下jdk 

ok  问题完美解决!!!


打赏

已有1人打赏

最代码官方的gravatar头像
最近浏览
泓鼎168  LV19 2月27日
水光浮藻  LV6 2021年4月8日
ImTring 2020年12月23日
暂无贡献等级
玉轩123456 2020年7月1日
暂无贡献等级
sgm123456  LV13 2020年6月28日
maregeo  LV1 2020年6月5日
黄金鸡123 2020年4月19日
暂无贡献等级
要成为架构师的人  LV3 2020年4月15日
暴风雨  LV6 2020年4月4日
张亚南 2020年3月27日
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友