Could not initialize class sun.awt.X11.XToolkit Error

来源:互联网 发布:张艺谋电影 知乎 编辑:程序博客网 时间:2024/05/17 07:21

问题描述

Weblogic应用中,有个上传图片功能,总是在上传时终止执行,无法上传成功。

服务器的Weblogic环境配置:
* jdk1.6.0_18 + linux-64
* Oracle Weblogic Server 10.3.3.0

后台报错信息:

<2015-8-7 下午072408秒 CST> <Error> <HTTP> <BEA-101017> <[ServletContext@21247461[app:img_system module:img_system.war path:/img_system spec-version:null]] Root cause of ServletException.java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11.XToolkit        at java.lang.Class.forName0(Native Method)        at java.lang.Class.forName(Class.java:169)        at java.awt.Toolkit$2.run(Toolkit.java:834)        at java.security.AccessController.doPrivileged(Native Method)        at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:826)        Truncated. see log file for complete stacktrace> 

从报错信息分析,是找不到类,无法初始化sun.awt.X11.XToolkit。

解决方案

在Weblogic的启动脚本中,修改Java命令启动选项,增加“-Djava.awt.headless=true”,以启用Headless模式,然后重启Weblogic即可。
其他可能方案:更新jdk,目前环境采用的jdk为jdk1.6.0_18,版本比较旧。

原因分析

java.awt.toolkit和java.awt.graphicsenvironment类中有许多方法,除了对字体,图像和打印的操作外还有调用显示器,键盘和鼠标的方法。对于Linux环境,则需要依赖X-server的支持,然而因为某些原因导致无法初始化而报错。此时,可以采用JRE提供的headless模式(从J2SE 1.4开始Java平台提供了对Headless模式的支持)。
关于Headless模式,是指在缺少显示屏、键盘或鼠标时的系统配置。当系统应用需要自行生成图片时,可能会用到该模式。

延伸阅读

  1. 关于如何在JavaSE平台上使用Headless模式。
0 0
原创粉丝点击