报错: Could not initialize class sun.awt.X11GraphicsEnvironment

前几天出差去解决了个程序excel导出为空数据的问题,报错信息为Could not initialize class sun.awt.X11GraphicsEnvironment

百度上解释的原因应该就是说一个Java服务器来处理图片的API基本上是需要运行一个X-server以便能使用AWT(抽象窗口工具集),其实也就是说负责图像显示的xserver无法启动

解决办法就是开启headless就好了,Headless模式是系统的一种配置模式 , 开始激活headless模式,告诉程序,现在你要工作在Headless mode下,就不要指望硬件帮忙了,你得自力更生,依靠系统的计算能力模拟出这些特性来继续


开启headless模式的方式网上给了很多,下列方法是我这次所配置的

修改Tomcat目录bin下的catalina.sh文件

在非注释第一行新增 

CATALINA_OPTS="-Djava.awt.headless=true"

然后重启Tomcat即可


若上述方法配置失败了,可以试试其他开启方法,这里我将网上所提供的开启方式汇总一下,但是下列方法我个人没有进行验证过,按理来说应该都是一样的

1.修改Tomcat目录bin下的catalina.sh文件,在非注释第一行添加该配置 JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"

2.修改Tomcat目录bin下的catalina.sh文件,在下列所示图片位置新增 -Djava.awt.headless=true 即可

3.修改Tomcat目录bin下的catalina.sh文件

查找 -Djava.io.tmpdir="\$CATALINA_TMPDIR" 这行,在下列新增该配置 -Djava.awt.headless=true \ (大概有七八处左右)

4.直接在当前用户的 .bash_profile 文件后边加上 export JAVA_OPTS=-Djava.awt.headless=true,然后source .bash_profile使配置生效

5.在服务包中,报错的servlet或者action接口处,添加:System.setProperty("java.awt.headless","true");

posted @ 2022-06-20 10:41  RFAA  阅读(2873)  评论(0编辑  收藏  举报