Linux环境下部署jasperreport出现net.sf.jasperreports.engine.util.JRFontNotFoundException
2017-04-06 16:07
741 查看
如题所示的错误完整语句如下:
net.sf.jasperreports.engine.util.JRFontNotFoundException: Font '宋体' is not available to the JVM. See the Javadoc for more details。。
这是一个很闹心的问题,你会发现你在windows环境开发,报表显示的好好的,但是开开心心部署到lInux环境时,可能就会给你泼如题所示的冷水。
要解决这个问题要从2方面考虑:
1)Linux在没有安装报表所需中文字体的情况:
第一步:安装方法——转到Linux环境下的/usr/share/fonts路径下,新建一个dir如zh_CN,把准备好的中文字体传到该目录下(中文字体的获取可以从windows环境的C:/Windows/Fonts下拷贝~),再执行如下命令:
即可成功安装字体。可以执行命令:
查看是否安装好字体。
第二步:(很重要!!)在项目的classes目录下加一个jasperreports.properties配置文件,添加内容如下:
net.sf.jasperreports.awt.ignore.missing.font=true
再重启项目即可~~
(以上方法亲测有效)
2)考虑到可移植性,把字体打包成jar放在项目里面。
这种方法我尝试了并没有起作用,可能是因为之前我已成功在Linux里安装好了中文字体的原因?但是我觉得也是一个比较靠谱的办法,所以记录下,可能以后用得着呢。。
前往官方社区下载jasperreports-6.2.0的完整版项目,解压后里面会有很多demo,找到fonts这个项目:
<%=你的jasperreport目录%>/demo/fonts.。
再转到net\sf\jasperreports\fonts\dejavu目录,把里面自带的字体删除,换上你自己的中文字体如STFANGSO.TTF(仿宋),然后修改net\sf\jasperreports\fonts下面的fonts.xml,这里以仿宋为例吧:
好了,现在开始着手把修改后的字体项目打成jar包:
在dos窗口转至:jasperreports-6.2.0\demo\fonts,执行如下命令:
fonts.jar即是你封装好的字体jar,可以反编译查看其大致结构:
然后把这个jar包放到classpath下,同时也别忘了在classes目录下加上一个如1)情况所讲的配置文件。
【注:这种方法我目前还没有测通,可能是因为已经在Linux安装好字体的原因~】
3)其他方法
参考于网络但大多数都没测通,可能情况不同采取的方法不同。
大小: 4.5 KB
查看图片附件
net.sf.jasperreports.engine.util.JRFontNotFoundException: Font '宋体' is not available to the JVM. See the Javadoc for more details。。
这是一个很闹心的问题,你会发现你在windows环境开发,报表显示的好好的,但是开开心心部署到lInux环境时,可能就会给你泼如题所示的冷水。
要解决这个问题要从2方面考虑:
1)Linux在没有安装报表所需中文字体的情况:
第一步:安装方法——转到Linux环境下的/usr/share/fonts路径下,新建一个dir如zh_CN,把准备好的中文字体传到该目录下(中文字体的获取可以从windows环境的C:/Windows/Fonts下拷贝~),再执行如下命令:
mkfontscale mkfontdir fc-cache -fv
即可成功安装字体。可以执行命令:
fc-list
查看是否安装好字体。
第二步:(很重要!!)在项目的classes目录下加一个jasperreports.properties配置文件,添加内容如下:
net.sf.jasperreports.awt.ignore.missing.font=true
再重启项目即可~~
(以上方法亲测有效)
2)考虑到可移植性,把字体打包成jar放在项目里面。
这种方法我尝试了并没有起作用,可能是因为之前我已成功在Linux里安装好了中文字体的原因?但是我觉得也是一个比较靠谱的办法,所以记录下,可能以后用得着呢。。
前往官方社区下载jasperreports-6.2.0的完整版项目,解压后里面会有很多demo,找到fonts这个项目:
<%=你的jasperreport目录%>/demo/fonts.。
再转到net\sf\jasperreports\fonts\dejavu目录,把里面自带的字体删除,换上你自己的中文字体如STFANGSO.TTF(仿宋),然后修改net\sf\jasperreports\fonts下面的fonts.xml,这里以仿宋为例吧:
<?xml version="1.0" encoding="UTF-8"?> <fontFamilies> <fontFamily name="仿宋"> <normal>net/sf/jasperreports/fonts/dejavu/STFANGSO.TTF</normal> <bold>net/sf/jasperreports/fonts/dejavu/STFANGSO.TTF</bold> <italic>net/sf/jasperreports/fonts/dejavu/STFANGSO.TTF</italic> <boldItalic>net/sf/jasperreports/fonts/dejavu/STFANGSO.TTF</boldItalic> <pdfEncoding>Identity-H</pdfEncoding> <pdfEmbedded>true</pdfEmbedded> <exportFonts> <export key="net.sf.jasperreports.html">'仿宋', Arial, Helvetica, sans-serif</export> <export key="net.sf.jasperreports.xhtml">'仿宋', Arial, Helvetica, sans-serif</export> </exportFonts> <!-- <locales> <locale>en_US</locale> <locale>de_DE</locale> </locales> --> </fontFamily> </fontFamilies>
好了,现在开始着手把修改后的字体项目打成jar包:
在dos窗口转至:jasperreports-6.2.0\demo\fonts,执行如下命令:
jar cvf fonts.jar *
fonts.jar即是你封装好的字体jar,可以反编译查看其大致结构:
然后把这个jar包放到classpath下,同时也别忘了在classes目录下加上一个如1)情况所讲的配置文件。
【注:这种方法我目前还没有测通,可能是因为已经在Linux安装好字体的原因~】
3)其他方法
参考于网络但大多数都没测通,可能情况不同采取的方法不同。
大小: 4.5 KB
查看图片附件
相关文章推荐
- Linux环境下部署jasperreport出现net.sf.jasperreports.engine.util.JRFontNotFoundException
- 解决Linux下部署使用JasperReport的项目的错误:net.sf.jasperreports.engine.util.JRFontNotFoundException: Font '宋体' i
- 解决CentOS 中部署JasperReport时出错的问题。错误:net.sf.jasperreports.engine.util.JRFontNotFoundException: Font '宋体
- 解决CentOS 中部署JasperReport时出错的问题。错误:net.sf.jasperreports.engine.util.JRFontNotFoundException: Font '宋体' is not available to the JVM.
- net.sf.jasperreports.engine.util.JRFontNotFoundException: Font ‘黑体’ is not available to the JVM
- net.sf.jasperreports.engine.util.JRFontNotFoundException: Font "黑体" is not available to the JVM. See
- 抛出 net.sf.jasperreports.engine.JRException: Resource not found at: xxx.jasper 异常的解决办法
- Report compiler class not found : net.sf.jasperreports.compilers.JRGroovyCompiler
- net.sf.jasperreports.engine.JRException: Error retrieving field value from bean
- net.sf.jasperreports.engine.JRException: Error retrieving field value from bean :
- net.sf.jasperreports.engine.JRException: Error retrieving field value from bean :
- Android JSON 出现Caused by: java.lang.ClassNotFoundException: net.sf.json.JSONObject;
- linux环境下weblogic 部署程序出现java.util,zip.ZpException:error in opening zip file
- Unable to find parent packages json-default 与java.lang.ClassNotFoundException: net.sf.ezmorph.Morphe
- 部署war包到Weblogic出现QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken解决方法
- ASP.NET MVC 出现错误 “The view 'XXX' or its master was not found or no view engine support”
- Spring4.0+Hibernate4.2.整合出现java.lang.ClassNotFoundException: org.hibernate.engine.FilterDefinition
- VAADIN应用在Tomcat下部署下的出现ClassNotFoundException问题
- Tomcat6环境JBPM4.3报错:java.lang.ClassNotFoundException: de.odysseus.el.util.SimpleResolver
- java.lang.ClassNotFoundException: net.sf.json.JSONArray错误