JasperReports encountered this error : Can't connect to X11 window server using ':0.0' as the value ...

Linux下JAVA程序在浏览器中显示打印报表pdf文档时,报如下错误:

JasperReports encountered this error : Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
或者JasperReports encountered this error : sun/awt/X11GraphicsEnvironment
分析:报表是用jasperReport做的,错误显示似乎是x11 server问题,经过查找原来是经典的java headless问题。
对于一个Java服务器来说经常要处理一些图形元素,例如地图的创建或者图形和图表等。这些API基本上总是需要运行一个X-server以便能使用AWT(Abstract Window Toolkit,抽象窗口工具集)。然而,运行一个不必要的X-server并不是一种好的网络管理方式
headless是指由于一些服务器(比如大型机)运行的环境比较特殊,不存在真实的设备去处理一些输入输出,比如显卡,键盘鼠标;这时就需要虚拟一些运行环境出来,或者就不要用到这些设备的相关操作(比如输入输出)。然而运行java.awt包又需要一个的图形环境,由此产生了异常。这个问题属于jdk1.3的bug,在sun的bug中可以找到。
这个问题是对于linux下部署的java项目存在的,在windows下不需要设置什么
解决办法:
网上解决方案
1:将jdk升级为jdk1.4,然后在java命令后加上运行参数 –Djava.awt.headless=true 即可,java xxxx.class -Djava.awt.headless=true 。
2:虚拟一个图形环境。一般在linux下使用Xvfb来虚拟一个图形环境,在linux命令行键入Xvfb :0 -screen 0 1024x768x16 & ,不过在使用之前要对Xvfb进行设置。
3:使用第三方工具包。可以使用 pja包,下载地址 http://www.eteks.com/pja/en/#Download ,使用方法见解决方案。
自己用过的
只要在Java的应用服务器中添加-Djava.awt.headless=true
如果是tomcat,那么在catalina.sh中加入-Djava.awt.headless=true即可

如果是websphere,在页面控制台中,找到应用程序服务器 > server1 > 进程定义 > Java 虚拟机,然后再“通用JVM参数”下面输入-Djava.awt.headless=true,保存,重启应用服务器,就ok了。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭