ireport报表在本地Windows环境运行正常,一旦部署到Linux环境上出现了如下问题:
Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser
网上搜了好久,试过
在你的打印的类中增加静态代码块,如下:
static {
System.setProperty(“java.awt.headless”, “true”);
}
不行
解决办法:
1.把需要用到的字体(可以直接拷贝windows系统的C:\WINDOWS\Fonts 下的相关字体)拷贝当前项目的classpath下,一般为classes目录下
2.在classpath里添加 jasperreports.properties 属性文件
文件内容:
net.sf.jasperreports.extension.registry.factory.fonts=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.ireport=fonts/fontsfamily1559715270254.xml
然后重启服务即可。如果接下来继续报错
net.sf.jasperreports.engine.util.JRFontNotFoundException: Font ‘宋体’ is not available to the JVM
说明没有找到这个字体
解决方法
打开jasperreports-5.6.0jar(我用的是这个版本),
找到:default.jasperreports.properties
在这里修改jasperreports的默认字体设置
修改为
net.sf.jasperreports.awt.ignore.missing.font=true
然后保存覆盖进去
把修改后的jar包重新放回去
重新启动项目 就ok了!