Could not initialize class sun.awt.X11GraphicsEnvironment

当我的系统使用Graphics2D和BufferedImage生成图片的时候,会出现 Could not initialize class sun.awt.X11GraphicsEnvironment 。但是我window下我的程序是没有问题的,部署到linux之后,才会出现该问题,说明该问题与 jar包没有关系,应该与环境变量差异有关。

经查验,发现确实是一个叫 awt.headless=true的属性不存在

所以存在两种解决方案:

1、代码中嵌入 System.setProperty("java.awt.headless", "true"); 

2、环境变量中配置 -Djava.awt.headless=true


为什么需要设置该参数呢?该参数有什么作用呢?

Headless模式是在缺少显示屏、键盘或者或者鼠标时的系统配置,你可以在这种模式下完成不同的操作,甚至是用图形数据也可以。因为Headless模式下生成图片可以传递到Headful系统进行更深层次渲染

在java.awt.toolkit和java.awt.graphicsenvironment类中有许多方法,除了对字体,图像和打印的操作外还有调用显示器,键盘,鼠标的方法,但是有一些类中,比如,Canvas和Panel,可以在headless模式下执行,在J2SE1.4平台之后就提供了对Headless的

你可能感兴趣的:(java)