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

问题描述

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

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

后台报错信息:

<2015-8-7 下午072408秒 CST>   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模式。

你可能感兴趣的:(Linux,java,weblogic,linux)