服务器保存png图片失败java.lang.NoClassFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
2012-09-29 10:08
357 查看
一、问题描述
C/S结构中,Server端在保存Client端上传的png图片时失败,经查log发现错因是java.lang.NoClassFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment(如下图)。系统原来运行没出现过这个问题,现在唯一的变量是启动server的用户由普通用户改为root。
![](http://img.my.csdn.net/uploads/201209/29/1348882314_7594.jpg)
二、原因分析
经过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启动命令增加选项-Djava.awt.headless=true,问题解决(Google是王道)!!
如果是在web server中,则在server的启动脚本中增加相同选项。
四、参考资料
1. linux中servlet画图问题的解决
2. Java官网的headless support
3. 2008-08-26 08:57 java.awt.headless=true的含义
C/S结构中,Server端在保存Client端上传的png图片时失败,经查log发现错因是java.lang.NoClassFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment(如下图)。系统原来运行没出现过这个问题,现在唯一的变量是启动server的用户由普通用户改为root。
![](http://img.my.csdn.net/uploads/201209/29/1348882314_7594.jpg)
二、原因分析
经过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启动命令增加选项-Djava.awt.headless=true,问题解决(Google是王道)!!
如果是在web server中,则在server的启动脚本中增加相同选项。
四、参考资料
1. linux中servlet画图问题的解决
2. Java官网的headless support
3. 2008-08-26 08:57 java.awt.headless=true的含义
相关文章推荐
- java-后台生成图表、并将图表保存为PNG图片
- java-后台生成图表、并将图表保存为PNG图片
- Java上传图片到服务器路径获取系列之--图片保存到Tomcat的webapps目录下
- 阿里云图片服务 上传失败 java.lang.RuntimeException: Unsupported algorithm: HmacSHA1
- Java从网络批量读取图片并保存至本网站服务器后再插入文章中
- JAVA用http协议GET方法从服务器获取图片保存到本地
- java-后台生成图表、并将图表保存为PNG图片
- summernote图片上传功能保存到服务器指定文件夹+php代码+java方法
- java连接Fastdfs图片服务器上传失败的解决方法
- 图片保存到nginx centos6.5服务器失败 解决办法
- java-后台生成图表、并将图表保存为PNG图片
- [置顶] JAVA上传文件图片到服务器保存
- summernote图片上传功能保存到服务器指定文件夹+php代码+java方法
- weblogic服务器保存图片失败解决办法
- Java上传图片到七牛服务器简单教程
- java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderServlet服务器启动报异常
- java下载并保存网页上的图片
- eclipse启动失败java.lang.RuntimeException: No application id has been found.
- Java截取图片的一部分并保存为40*40的图片
- 安卓上传图片,playframework服务器接收保存