Posted on 2012-01-19 12:01
在路上... 阅读(902)
评论(0) 编辑 收藏 所属分类:
JAVA相关
在linux环境部署应用时,有时候需要用到AWT处理图片的功能,典型的就是图片的缩放处理等等,可能会遇到下面错误:
java.lang.NoClassDefFoundError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:141)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:62)
at java.awt.image.BufferedImage.createGraphics(BufferedImage.java:1041)
甚至在默写情况下面可能导致jvm崩溃,对于该问题的解决办法是
1、配置java启动参数java -Djava.awt.headless=true
在jdk1.4及以上的环境中,允许使用没有键盘、鼠标、x window显示启动的headless虚拟机模式,通过加上上面的属性即可
2、配置合适的DISPLAY属性
例如通过当前用户启动了一个x window的图形界面,可以将设置类似export DISPLAY=localhost:10.0这样的环境变量将awt定位到一个实际存在的环境处理。
配置成功之后,可能可以看到这样的提示
nl.ikarus.nxt.priv.imageio.icoreader.lib.ICOReader loaded, version: 0.06.064 build: 691
配置好之后就不会报错了
网上还有一种办法,启动Xvfb
使用
ls -l /tmp/.X*lock
可以查看当前启动了那些xwindow,如果发现X0,可能0.0已经被使用了
使用两个命令:
------------------------------------
Xvfb :1 -screen 0 800x600x16 & 启动Xwindows的虚拟设备
export DISPLAY=localhost:1.0 配置本地环境
------------------------------------
参考:http://javatechniques.com/blog/linux-x11-libraries-for-headless-mode/