posts - 33, comments - 46, trackbacks - 0, articles - 2

JAVA AWT处理图片时的错误

Posted on 2012-01-19 12:01 在路上... 阅读(886) 评论(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/


只有注册用户登录后才能发表评论。


网站导航: