服务器保存png图片失败java.lang.NoClassFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment

本文介绍了在C/S结构中,服务器端保存客户端上传PNG图片时遇到`java.lang.NoClassFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment`的问题。问题源于缺少X-Server环境,解决方案是在服务器启动命令中添加`-Djava.awt.headless=true`选项,从而以无头模式运行,成功解决了图片处理问题。
摘要由CSDN通过智能技术生成

一、问题描述

       C/S结构中,Server端在保存Client端上传的png图片时失败,经查log发现错因是java.lang.NoClassFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment(如下图)。系统原来运行没出现过这个问题,现在唯一的变量是启动server的用户由普通用户改为root。



二、原因分析

       经过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启动命令增加

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值