java 图片转换、展示 异常问题

java 图片转换、展示 异常问题

Caused by: java.lang.NoClassDefFoundError: 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.

Caused by: java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
	at java.lang.Class.forName0(Native Method) ~[?:1.8.0_112]
	at java.lang.Class.forName(Class.java:264) ~[?:1.8.0_112]
	at java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:103) ~[?:1.8.0_112]
	at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82) ~[?:1.8.0_112]
	at org.xhtmlrenderer.context.AWTFontResolver.init(AWTFontResolver.java:57) ~[core-renderer-R8-0604.jar:?]
	at org.xhtmlrenderer.context.AWTFontResolver.<init>(AWTFontResolver.java:53) ~[core-renderer-R8-0604.jar:?]
	at org.xhtmlrenderer.layout.SharedContext.<init>(SharedContext.java:102) ~[core-renderer-R8-0604.jar:?]
	at org.xhtmlrenderer.pdf.ITextRenderer.<init>(ITextRenderer.java:111) ~[core-renderer-R8-0604.jar:?]
	at org.xhtmlrenderer.pdf.ITextRenderer.<init>(ITextRenderer.java:102) ~[core-renderer-R8-0604.jar:?]

解决方案

在tomcat的catalina.sh中加上-Djava.awt.headless=true即可

JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"

问题解析

· 该问题产生原因是由于应用程序未找到服务器上Xserver服务对应接口或没有访问权限,导致X11GraphicsEnvironment类初始化失败,或者没有找到该类导致抛出该异常。
· 在环境变量中配置headless模式,不再依赖外部设备,由程序内部算法逻辑处理即可解决该问题

Headless mode

· 这项设置是专门用于服务器设置的特殊属性。
· 对于我们普通的PC桌面电脑的使用来说,键盘,鼠标和显示器是必备的三种外部设备,因为我们正是通过这三种设备实现人与电脑的交互。
· 但是对于服务器,配置好运行后,通常的情况下,是无需这三种设备的,除非故障,一般情况下它无需人工干预。比如,WEB服务器,邮件服务器,FTP服务器等等,他们在IDC机房中运行时,一般都不会专门配置显示器,键盘和鼠标。
· 电脑开启该配置项,可让电脑不再去扫描这些设备
· java应用程序开始时设置应用程序为headless模式,应用程序则不会再依赖这些外部设备,使用应用程序内部逻辑算法去实现相应功能

X server

· X server是Linux系统里面图形接口服务器的简称。Windows系统的界面是这个系统不可分割的一部分,各种窗口操作界面显示都是由系统核心直接管理的,而Linux的图形界面并不是系统的必要组成部分,它可以在无界面的条件下运行。当需要Linux提供界面的时候,系统就会建立一个或者数个X server,通过X协议跟窗口管理器交互,由独立于系统的应用程序来产生窗口,状态栏,按钮之类的交互界面。
· 比较常见的Linux界面操作环境有KDE和GNOME,为它们提供系统支持的就是X server,而并非Linux核心

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值