Could not initialize class sun.awt.X11GraphicsEnvironment解决方案

报错信息

Caused by: java.lang.InternalError: Can’t connect to X11 window server using ‘localhost:10.0’ as the value of the DISPLAY variable.

报错原因

一个 Java 服务器来处理图片的 API 基本上是需要运行一个 X-server 以便能使用 AWT(Abstract Window Toolkit,抽象窗口工具集)。所以,问题肯定出在启动 server 时,未能实现 X-Server 功能。报错的原因是:linux 未能启动 XServer 服务

解决方案

1、服务器安装 XServer (这个服务一般包含于图形化界面组里);

2、运行 headless 服务器加 - Djava.awt.headless=true
需要 JDK1.4 以上版本;在有问题的 server 服务的 java -jar 启动命令增加选项 - Djava.awt.headless=true;

示例

# tomcat将此参数加入catalina.sh的JAVA_OPTS参数中
JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"

# springBoot项目将参数加入到启动命令中
/usr/java/jdk1.8.0_191/bin/java -jar -Djava.awt.headless=true -Xms128m -Xmx512m  spring-demo-1.0-SNAPSHOT.jar