CentOS 6.5 + JasperReports 5.6.0 = Exception while reading font data

I'm having a weird problem that I can't seem to work around. Whenever I try to render a PDF from jrxml on an application server on a CentOS machine, I get "java.io.IOException: Problem reading font data". Reports are generated using Jaspersoft Studio 5.6.0. I suspect this is not even font related, as the result is the same when using the report without any fonts.

It works fine on Windows and Ubuntu 12.04.

Configuration:

  • CentOS 6.5
  • Java 1.8
  • Wildfly 8.1.0
  • Spring 4.0.3
  • JasperReports 5.6.0

What I have tried so far:

  • add flag: java.awt.headless = true
  • changing permissions on temporary folders
  • works as root
  • using open jrxml without styles and fonts
  • installing MSCore fonts (in both system and JRE folders)

Stack trace:

    Caused by: java.lang.ExceptionInInitializerError
        at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:124) [jasperreports-5.6.0.jar:5.6.0]
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:89) [jasperreports-5.6.0.jar:5.6.0]
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:104) [jasperreports-5.6.0.jar:5.6.0]
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:62) [jasperreports-5.6.0.jar:5.6.0]
        at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:179) [jasperreports-5.6.0.jar:5.6.0]
        at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:108) [jasperreports-5.6.0.jar:5.6.0]
        at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:668) [jasperreports-5.6.0.jar:5.6.0]
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:984) [jasperreports-5.6.0.jar:5.6.0]
        at org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView.fillReport(AbstractJasperReportsView.java:676) [spring-webmvc-4.0.3.RELEASE.jar:4.0.3.RELEASE]
        at org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView.renderMergedOutputModel(AbstractJasperReportsView.java:561) [spring-webmvc-4.0.3.RELEASE.jar:4.0.3.RELEASE]
        at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:267) [spring-webmvc-4.0.3.RELEASE.jar:4.0.3.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1217) [spring-webmvc-4.0.3.RELEASE.jar:4.0.3.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1005) [spring-webmvc-4.0.3.RELEASE.jar:4.0.3.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:952) [spring-webmvc-4.0.3.RELEASE.jar:4.0.3.RELEASE]
        ... 71 more
Caused by: net.sf.jasperreports.engine.JRRuntimeException: java.io.IOException: Problem reading font data.
        at net.sf.jasperreports.engine.fonts.SimpleFontFace.setTtf(SimpleFontFace.java:182) [jasperreports-5.6.0.jar:5.6.0]
        at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.parseFontFace(SimpleFontExtensionHelper.java:368) [jasperreports-5.6.0.jar:5.6.0]
        at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.parseFontFamily(SimpleFontExtensionHelper.java:290) [jasperreports-5.6.0.jar:5.6.0]
        at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.parseFontFamilies(SimpleFontExtensionHelper.java:254) [jasperreports-5.6.0.jar:5.6.0]
        at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.loadFontFamilies(SimpleFontExtensionHelper.java:215) [jasperreports-5.6.0.jar:5.6.0]
        at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.loadFontFamilies(SimpleFontExtensionHelper.java:184) [jasperreports-5.6.0.jar:5.6.0]
        at net.sf.jasperreports.engine.fonts.FontExtensionsRegistry.getExtensions(FontExtensionsRegistry.java:56) [jasperreports-5.6.0.jar:5.6.0]
        at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getExtensions(DefaultExtensionsRegistry.java:110) [jasperreports-5.6.0.jar:5.6.0]
        at net.sf.jasperreports.engine.util.JRStyledTextParser.<clinit>(JRStyledTextParser.java:83) [jasperreports-5.6.0.jar:5.6.0]
        ... 85 more
Caused by: java.io.IOException: Problem reading font data.
        at java.awt.Font.createFont0(Font.java:1000) [rt.jar:1.8.0_05]
        at java.awt.Font.createFont(Font.java:877) [rt.jar:1.8.0_05]
        at net.sf.jasperreports.engine.fonts.SimpleFontFace.setTtf(SimpleFontFace.java:174) [jasperreports-5.6.0.jar:5.6.0]
        ... 93 more

      

Application Server Properties:

DEBUG [org.jboss.as.config] (MSC service thread 1-2) Configured system properties:
        [Standalone] =
        awt.toolkit = sun.awt.X11.XToolkit
        file.encoding = UTF-8
        file.encoding.pkg = sun.io
        file.separator = /
        java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment
        java.awt.headless = true
        java.awt.printerjob = sun.print.PSPrinterJob
        java.class.path = /usr/share/wildfly-8.1.0.Final/jboss-modules.jar
        java.class.version = 52.0
        java.endorsed.dirs = /opt/jdk1.8.0_05/jre/lib/endorsed
        java.ext.dirs = /opt/jdk1.8.0_05/jre/lib/ext:/usr/java/packages/lib/ext
        java.home = /opt/jdk1.8.0_05/jre
        java.io.tmpdir = /tmp
        java.library.path = /usr/java/packages/lib/i386:/lib:/usr/lib
        java.net.preferIPv4Stack = true
        java.runtime.name = Java(TM) SE Runtime Environment
        java.runtime.version = 1.8.0_05-b13
        java.specification.name = Java Platform API Specification
        java.specification.vendor = Oracle Corporation
        java.specification.version = 1.8
        java.util.logging.manager = org.jboss.logmanager.LogManager
        java.vendor = Oracle Corporation
        java.vendor.url = http://java.oracle.com/
        java.vendor.url.bug = http://bugreport.sun.com/bugreport/
        java.version = 1.8.0_05
        java.vm.info = mixed mode
        java.vm.name = Java HotSpot(TM) Server VM
        java.vm.specification.name = Java Virtual Machine Specification
        java.vm.specification.vendor = Oracle Corporation
        java.vm.specification.version = 1.8
        java.vm.vendor = Oracle Corporation
        java.vm.version = 25.5-b02
        javax.management.builder.initial = org.jboss.as.jmx.PluggableMBeanServerBuilder
        javax.xml.datatype.DatatypeFactory = __redirected.__DatatypeFactory
        javax.xml.parsers.DocumentBuilderFactory = __redirected.__DocumentBuilderFactory
        javax.xml.parsers.SAXParserFactory = __redirected.__SAXParserFactory
        javax.xml.stream.XMLEventFactory = __redirected.__XMLEventFactory
        javax.xml.stream.XMLInputFactory = __redirected.__XMLInputFactory
        javax.xml.stream.XMLOutputFactory = __redirected.__XMLOutputFactory
        javax.xml.transform.TransformerFactory = __redirected.__TransformerFactory
        javax.xml.validation.SchemaFactory:http://www.w3.org/2001/XMLSchema = __redirected.__SchemaFactory
        javax.xml.xpath.XPathFactory:http://java.sun.com/jaxp/xpath/dom = __redirected.__XPathFactory
        jboss.home.dir = /usr/share/wildfly-8.1.0.Final
        jboss.host.name = medius-doc-verifier
        jboss.modules.dir = /usr/share/wildfly-8.1.0.Final/modules
        jboss.modules.system.pkgs = org.jboss.byteman
        jboss.node.name = medius-doc-verifier
        jboss.qualified.host.name = medius-doc-verifier.medius
        jboss.server.base.dir = /usr/share/wildfly-8.1.0.Final/standalone
        jboss.server.config.dir = /usr/share/wildfly-8.1.0.Final/standalone/configuration
        jboss.server.data.dir = /usr/share/wildfly-8.1.0.Final/standalone/data
        jboss.server.deploy.dir = /usr/share/wildfly-8.1.0.Final/standalone/data/content
        jboss.server.log.dir = /usr/share/wildfly-8.1.0.Final/standalone/log
        jboss.server.name = medius-doc-verifier
        jboss.server.persist.config = true
        jboss.server.temp.dir = /usr/share/wildfly-8.1.0.Final/standalone/tmp
        line.separator =

        logging.configuration = file:/usr/share/wildfly-8.1.0.Final/standalone/configuration/logging.properties
        module.path = /usr/share/wildfly-8.1.0.Final/modules
        org.jboss.boot.log.file = /usr/share/wildfly-8.1.0.Final/standalone/log/server.log
        org.jboss.resolver.warning = true
        org.xml.sax.driver = __redirected.__XMLReaderFactory
        os.arch = i386
        os.name = Linux
        os.version = 2.6.32-431.el6.x86_64
        path.separator = :
        sun.arch.data.model = 32
        sun.boot.class.path = /opt/jdk1.8.0_05/jre/lib/resources.jar:/opt/jdk1.8.0_05/jre/lib/rt.jar:/opt/jdk1.8.0_05/jre/lib/sunrsasign.jar:/opt/jdk1.8.0_05/jre/lib/jsse.jar:/opt/jdk1.8.0_05/jre/lib/jce.jar:/opt/jdk1.8.0_05/jre/lib/charsets.jar:/opt/jdk1.8.0_05/jre/lib/jfr.jar:/opt/jdk1.8.0_05/jre/classes
        sun.boot.library.path = /opt/jdk1.8.0_05/jre/lib/i386
        sun.cpu.endian = little
        sun.cpu.isalist =
        sun.io.unicode.encoding = UnicodeLittle
        sun.java.command = /usr/share/wildfly-8.1.0.Final/jboss-modules.jar -mp /usr/share/wildfly-8.1.0.Final/modules org.jboss.as.standalone -Djboss.home.dir=/usr/share/wildfly-8.1.0.Final -Djboss.server.base.dir=/usr/share/wildfly-8.1.0.Final/standalone -Djava.awt.headless=true
        sun.java.launcher = SUN_STANDARD
        sun.jnu.encoding = UTF-8
        sun.management.compiler = HotSpot Tiered Compilers
        sun.os.patch.level = unknown
        user.country = US
        user.dir = /usr/share/wildfly-8.1.0.Final/bin
        user.home = /root
        user.language = en
        user.name = root
        user.timezone = Europe/Sarajevo

      

Bare JRXML (no fonts)

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version last-->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Invoice" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="40" bottomMargin="20" isSummaryWithPageHeaderAndFooter="true" whenResourceMissingType="Empty" uuid="4eedbb89-b4f6-4469-9ab6-f642a1688cf7">
    <property name="com.jaspersoft.studio.unit." value="pixel"/>
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="InvoiceTestDataSourceProvider"/>
    <import value="org.apache.commons.lang3.StringUtils"/>
    <style name="Table_TD" mode="Transparent" backcolor="#FFFFFF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
            <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
            <bottomPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
            <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
        </box>
    </style>
    <style name="Table 1_TH" mode="Opaque" backcolor="#F0F8FF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <style name="Table 1_CH" mode="Opaque" backcolor="#BFE1FF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <style name="Table 1_TD" mode="Opaque" backcolor="#FFFFFF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <parameter name="DATEFORMAT_PATTERN" class="java.lang.String" isForPrompting="false">
        <parameterDescription><![CDATA[Date format for current user]]></parameterDescription>
        <defaultValueExpression><![CDATA["MM/dd/yyyy"]]></defaultValueExpression>
    </parameter>
    <pageHeader>
        <band height="266">
            <image hAlign="Left">
                <reportElement x="0" y="0" width="110" height="25" uuid="52b7fe13-c5ea-4ab8-9335-a57e5d481642"/>
                <imageExpression><![CDATA["reports/logo.png"]]></imageExpression>
            </image>
        </band>
    </pageHeader>
    <detail>
        <band height="275"/>
    </detail>
    <pageFooter>
        <band height="71"/>
    </pageFooter>
    <summary>
        <band height="102"/>
    </summary>
</jasperReport>

      

Any help or information if you experience similar issues would be appreciated!

Thank!

Edit:

Debug output on CentOS before the exception is thrown:

ESC[0mESC[32m13:41:21,228 DEBUG [net.sf.jasperreports.extensions.SpringExtensionsRegistry] (default task-28) Found 0 beans for extension type interface net.sf.jasperreports.repo.RepositoryService
ESC[0mESC[32m13:41:21,233 DEBUG [net.sf.jasperreports.extensions.SpringExtensionsRegistry] (default task-28) Found 0 beans for extension type interface net.sf.jasperreports.repo.PersistenceServiceFactory

      

There are two additional debug lines on a Windows machine that are not in the CentOS log:

15:48:19,180 DEBUG [net.sf.jasperreports.extensions.SpringExtensionsRegistry] (default task-4) Found 7 beans for extension type interface net.sf.jasperreports.engine.fonts.FontFamily
15:48:19,182 DEBUG [net.sf.jasperreports.extensions.SpringExtensionsRegistry] (default task-4) Getting bean fontBean133462384309185621 as extension of type net.sf.jasperreports.engine.fonts.FontFamily
15:48:19,195 DEBUG [net.sf.jasperreports.extensions.SpringExtensionsRegistry] (default task-4) Found 0 beans for extension type interface net.sf.jasperreports.repo.RepositoryService
15:48:19,199 DEBUG [net.sf.jasperreports.extensions.SpringExtensionsRegistry] (default task-4) Found 0 beans for extension type interface net.sf.jasperreports.repo.PersistenceServiceFactory

      

+3


source to share


1 answer


It looks like someone ran into a problem with Jenkins . Have you tried installing fonts using yum?

yum install dejavu-sans-fonts

      



Running this on one of my CentOS boxes does not apply to any X dependencies.

Edit : Your problems might be caused by file system permission issues. This person reported a very similar issue that was caused by bad permissions on the Java temp directory.

0


source







All Articles