• 验证码无法显示:Could not initialize class sun.awt.X11GraphicsEnvironment 解决方案


    一、原因现象:图下图

    二、原因导致:

      经过Google发现很多人也出现同样的问题。从了解了X11GraphicEnvironment这个类的功能入手,一个Java服务器来处理图片的API基本上是需要运行一个X-server以便能使用AWT(Abstract Window Toolkit,抽象窗口工具集)。所以,问题肯定出在启动server时,未能实现X-Server功能。root用户未启动XServer,mmcse中启动了XWindow。so问题来了。

    三、解决方法:

      1. 安装XServer(忽略,因为服务器本身软硬件环境基本没动过);

      2. 运行headless服务器-Djava.awt.headless=true (需要JDK1.4以上版本)。重点来看这种解决方案(详见参考资料,但主要涉及的是Webapp,设置webserver。我们的场景是在applet client作图,然后在server端处理成png并保存)

         具体解决办法:在各个server服务的java -jar启动命令增加选项-Djava.awt.headless=true,问题解决(Google是王道)!!

         如果是在web server中,则在server的启动脚本中增加相同选项。

    linux如下:

     

    四、参考资料

    1. linux中servlet画图问题的解决 

    2. Java官网的headless support

    3. java.awt.headless=true的含义

  • 相关阅读:
    Systemd 指令
    2018年书单
    2017年书单
    Centos7 Devstack [Rocky] 重启后无法联网
    kvm虚拟机操作相关命令及虚拟机和镜像密码修改
    负载均衡原理-转
    用配置文件里面的参数值替换yaml模板中的变量值【python】
    linux工具之sar
    利用系统缓存优化程序的运行效率
    Elasticsearch单机部署
  • 原文地址:https://www.cnblogs.com/xiaoyaojinzhazhadehangcheng/p/9116290.html
Copyright © 2020-2023  润新知