搞定Liunx下的JasperReports
在一个Liunx下运行JasperReportS总是抛出Error initializing graphic environment的异常,跟踪JasperReports的源代码发现在net.sf.jasperreports.engine.util.JRGraphEnvInitializer中抛出异常,是GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames()这个方法出错,单写一个servlet测试抛出
Exception in thread "main" java.lang.IllegalArgumentException
at java.nio.Buffer.position(Buffer.java:218)
at sun.font.TrueTypeFont.lookupName(TrueTypeFont.java:818)
at sun.font.TrueTypeFont.getFamilyName(TrueTypeFont.java:884)
at sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:476)
at sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:494)
这样的异常
Google一下发现这个问题还挺多的(JasperReports直接抛这个异常不就好了么,还自己抛一个出来,害我绕了很多圈圈)
这是一个Java的字体设置问题造成的
简单一个 export LANG=en_US.UTF-8
一般来说要设置 Linux 系统的环境变量只需要在 /etc/profile (全局) 或者 ~/.bashrc (单个用户) 即可。但是对于 LANG 变量来说,有时候你即使在所有这些初始化脚本里面 export 过了,LANG 的值还是纹丝不动。实际上,你需要去修改 /etc/sysconfig/i18n 文件里面的内容。
Ok问题解决了,看来当LANG设置为中文时就是出现这个问题,治本的方法还得改font.conf,不知那位大侠能倾囊相授.嘻嘻