解决Centos 7 下 tomcat字体异常 Font '宋体' is not available to the JVM

错误提示:

SEVERE: Servlet.service() for servlet [example] in context with path [/myproject] threw exception [Request processing failed; nested exception is net.sf.jasperreports.engine.util.JRFontNotFoundException: Font ‘宋体‘ is not available to the JVM. See the Javadoc for more details.] with root cause
net.sf.jasperreports.engine.util.JRFontNotFoundException: Font ‘宋体‘ is not available to the JVM. See the Javadoc for more details.
    at net.sf.jasperreports.engine.fonts.FontUtil.checkAwtFont(FontUtil.java:356)
    at net.sf.jasperreports.engine.fill.SimpleTextLineWrapper.loadFont(SimpleTextLineWrapper.java:368)
    at net.sf.jasperreports.engine.fill.SimpleTextLineWrapper.getGeneralFontInfo(SimpleTextLineWrapper.java:338)
    at net.sf.jasperreports.engine.fill.SimpleTextLineWrapper.createFontInfo(SimpleTextLineWrapper.java:278)
    at net.sf.jasperreports.engine.fill.SimpleTextLineWrapper.start(SimpleTextLineWrapper.java:240)
    at net.sf.jasperreports.engine.fill.TextMeasurer.measure(TextMeasurer.java:536)
    at net.sf.jasperreports.engine.fill.JRFillTextElement.chopTextElement(JRFillTextElement.java:670)
    at net.sf.jasperreports.engine.fill.JRFillTextField.prepare(JRFillTextField.java:767)
    at net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements(JRFillElementContainer.java:330)
    at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:382)
    at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:357)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillBandNoOverflow(JRVerticalFiller.java:433)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillPageHeader(JRVerticalFiller.java:396)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:257)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:123)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:539)
    at net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFiller.java:411)
    at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:115)
    at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:667)
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:983)
    at org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView.fillReport(AbstractJasperReportsView.java:676)
    at com.opensourcedata.admin.controller.ApplicationIReportView.fillReport(ApplicationIReportView.java:28)
    at org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView.renderMergedOutputModel(AbstractJasperReportsView.java:561)
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:267)
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1221)
    at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1005)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:952)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at com.opensourcedata.filter.SessionFilter.doFilterInternal(SessionFilter.java:62)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
解决方案:

1. 符合windows下的字体文件, 因为缺少的是宋体, 那么就将宋体, 复制到服务器上

2. 进入jsp项目的classes目录下 
[[email protected] ~]# cd /usr/share/tomcat/webapps/myproject/WEB-INF/classes/
[[email protected] classes]# ls
applicationContext.xml  com  config.properties  ehcache-hibernate.xml  log4j.xml

3. 复制刚才上传的字体文件到该目录下
[[email protected] classes]# cp ~/SIMSUNB.TTF .
l[[email protected] classes]# ls
applicationContext.xml  com  config.properties  ehcache-hibernate.xml  log4j.xml  SIMSUNB.TTF

4. 编辑一个jasperreports.properties文件
[[email protected] classes]# vim  jasperreports.properties
在该文件中输入以下内容:

net.sf.jasperreports.awt.ignore.missing.font=true

5. 重启tomcat服务

[[email protected] ~]# systemctl restart tomcat.service

解决Centos 7 下 tomcat字体异常 Font '宋体' is not available to the JVM

时间: 2024-10-21 21:19:04

解决Centos 7 下 tomcat字体异常 Font '宋体' is not available to the JVM的相关文章

CentOS系统下Tomcat的优化

一.JVM内存优化 vim ./bin/catalina.sh 在catalina.sh文件中添加以下配置: JAVA_OPTS="-server -Xms128m -Xmx128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -XX:MaxNewSize=32m" 观察配置内容是否生效: 首先查看tomcat进程编号: ps -ef|grep tomcat 然后查看tomcat实际内存信息,通过查看内存信息判断配置是否成功:(进程

Centos环境下Tomcat启动缓慢

最近项目上线部署的时候,发现一个问题.Tomcat在启动过程中耗费了很长的时间.查看日志,发现耗时最长的地方是: INFO [localhost-startStop-1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID gener ation using [SHA1PRNG] took [1,693,533] mi

OpenOffice菜单乱码解决和linux下安装字体

在OPenoffice的官网上下载了最新的Linux的zh64包,利用dpkg -i *.deb安装了所以的包,再进desktop-....的文件安装了快捷方式.在系统菜单栏里面就可以看到了,可是打开才发现菜单都是乱码,网上查阅后才知道是字体没有,不支持导致的,于是便去下载 就在win7的 c://windowns/fonts下面找了个新宋体过去(才10M+) 步骤: mkdir /usr/share/fonts/win 将window是中的中文字体文件复制到/usr/share/fonts/w

阿里云CentOS环境下tomcat启动超级慢的解决方案

1 为什么会出现这个问题 Tomcat在本地服务器跑,一切都正常,但部署到阿里云上,发现启动巨慢. 经过在网上搜索,找到了原因: Tomcat 7/8都使用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom类产生安全随机类SecureRandom的实例作为会话ID,这里花去了342秒,也即接近6分钟. SHA1PRNG算法是基于SHA-1算法实现且保密性较强的伪随机数生成器. 在SHA1PRNG中,有一个种子产生器

[oracle]解决centos 7下oracle的中文乱码问题

首先在形成中文乱码的原因是由于字符集不统一导致的,不同的字符集在转换的过程中必然要出现乱码,当然不排除可以转换.所以要解决中文乱码问题,思路是将输入.存储.显示等流程中涉及到字符集都统一为一种,对于oracle首先必须满足的先决条件是要服务端和客户段的字符集统一,若还不能解决问题,同时还要将系统的字符集与之统一,甚至导入或输入数据所使用的字符集统一. 看了网上的一些资料后,都说修改服务器的字符集风险比较大,确实,测试开发用还好说,假若是上线项目的服务器,那修改服务器字符集所带来的后果是不堪的,废

CentOS7.4 系统下 Tomcat 启动慢解决方法

CentOS7.4 系统下 Tomcat 启动慢解决的方法 首先查看日志信息,查看因为什么而启动慢 在CentOS7启动Tomcat时,启动过程很慢,需要几分钟,经过查看日志,发现耗时在这里:是session引起的随机数问题导致的.Tocmat的Session ID是通过SHA1算法计算得到的,计算Session ID的时候必须有一个密钥.为了提高安全性Tomcat在启动的时候会通过随机生成一个密钥. 22-Apr-2017 19:33:07.623 INFO [localhost-startS

centOS 6下安装java、tomcat

centOS 6 下安装java centOS  默认有java的运行环境(gcj),安装sun的jdk前先卸载 gcj. 卸载gcj: #java -version            <-查看当前gcj java的版本号(我这里得到的是 1.4.2) #yum -y remove java-1.4.2-gcj-compat   <- 卸载gcj (y参数表示 在y/n 提问时均回答 y) #chmod a+x jdk-6u14-linux-i586-rmp.bin    <- a+

centos/linux下的安装Tomcat

1.启动tomcat时候需要JDK依赖 如果没有安装的请移步到该链接Centos/linux下的JDK安装 2.从官网上下载tomcat压缩包 wget -c http://apache.fayea.com/tomcat/tomcat-7/v7.0.79/bin/apache-tomcat-7.0.79.tar.gz 3.解压该tomcat压缩包 tar -zxvf apache-tomcat-7.0.79.tar.gz 查看是否解压成功 4.配置CATALINA_HOME 后面的 export

解决MyEclipse下Tomcat启动变慢的方法

 最近感觉用myeclipse启动tomcat的时间越来越长..不但启动慢并且启动后打开的页面也慢,经过查找找到以下解决办法.. 1.由于Tomcat是服务器,部署好的工程就会一直驻留到服务器里,每次启动都会把部署到服务器里的工程全部启动,工程多了自然启动时间就慢,所以可以把以前的删除:tomcat安装目录D:\Tomcat\apache-tomcat-7.0.37\webapps在   webapps目录下把会看到以前的工程都删除了. 2.可能是因为eclipse和tomcat的交互而产生