zuidaima8181的gravatar头像
zuidaima81812018-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头像

分享到:

最近浏览
从良小贩 LV138月13日
月亮月亮月亮星星
peiyongjun LV28月13日
星星星星
sky111 LV78月11日
月亮星星星星星星
zk25796 LV138月11日
月亮月亮月亮星星
yuanfen LV158月10日
月亮月亮月亮星星星星星星
nackwang8月9日
暂无贡献等级
liyang3136 LV188月9日
太阳星星星星
yunfeiyang0514 LV118月9日
月亮月亮星星星星星星
kangweiliang LV48月8日
月亮
暂无贡献等级
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友