JasperSoft Studio初始化字体时出现问题



all,我在Jaspersoft Studio中编辑Jasper报告时遇到问题,显示了以下异常。

Could not initialize class
com.jaspersoft.studio.preferences.fonts.utils.FontUtils

为了引起错误,我所要做的就是尝试编辑任何文本字段或静态文本。下面是我的报告和项目的fonts.jar文件中的fonts.xml。我尝试使用的字体是Roboto,包含在JasperSoft的首选项部分,我已经包含了所有必要的ttf。

这种情况发生在项目的所有报告中,这里是一个示例。

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.12.2.final using JasperReports Library version 6.12.2-75c5e90a222ab406e416cbf590a5397028a52de3  -->
<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="Charges" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="98e6c42b-ce3b-4d93-b73d-e17368a5f94a">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="DataAdapterDummyJSON.xml"/>
<queryString language="jsonql">
<![CDATA[data.charges]]>
</queryString>
<field name="chargeName" class="java.lang.String">
<property name="net.sf.jasperreports.jsonql.field.expression" value="chargeName"/>
<property name="net.sf.jasperreports.json.field.expression" value="chargeName"/>
<fieldDescription><![CDATA[chargeName]]></fieldDescription>
</field>
<field name="chargeAmount" class="java.math.BigDecimal">
<property name="net.sf.jasperreports.jsonql.field.expression" value="chargeAmount"/>
<property name="net.sf.jasperreports.json.field.expression" value="chargeAmount"/>
<fieldDescription><![CDATA[chargeAmount]]></fieldDescription>
</field>
<background>
<band splitType="Stretch"/>
</background>
<detail>
<band height="24">
<textField>
<reportElement x="70" y="0" width="174" height="20" uuid="0b113029-609b-42fc-8269-384d8af6921d">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="Roboto" size="15"/>
</textElement>
<textFieldExpression><![CDATA[$F{chargeName}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="310" y="2" width="132" height="20" uuid="78b92d3d-4a53-4976-a8e8-e0dab507ce6a">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="Roboto" size="15" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA["$"+ new DecimalFormat("0.00").format($F{chargeAmount})]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>

项目的fonts.jar

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
<fontFamily name="DejaVu Sans">
<normal>net/sf/jasperreports/fonts/dejavu/DejaVuSans.ttf</normal>
<bold>net/sf/jasperreports/fonts/dejavu/DejaVuSans-Bold.ttf</bold>
<italic>net/sf/jasperreports/fonts/dejavu/DejaVuSans-Oblique.ttf</italic>
<boldItalic>net/sf/jasperreports/fonts/dejavu/DejaVuSans-BoldOblique.ttf</boldItalic>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
<exportFonts>
<export key="net.sf.jasperreports.html">'DejaVu Sans', Arial, Helvetica, sans-serif</export>
</exportFonts>
<!--
<locales>
<locale>en_US</locale>
<locale>de_DE</locale>
</locales>
-->
</fontFamily>
<fontFamily name="DejaVu Serif">
<normal>net/sf/jasperreports/fonts/dejavu/DejaVuSerif.ttf</normal>
<bold>net/sf/jasperreports/fonts/dejavu/DejaVuSerif-Bold.ttf</bold>
<italic>net/sf/jasperreports/fonts/dejavu/DejaVuSerif-Italic.ttf</italic>
<boldItalic>net/sf/jasperreports/fonts/dejavu/DejaVuSerif-BoldItalic.ttf</boldItalic>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
<exportFonts>
<export key="net.sf.jasperreports.html">'DejaVu Serif', 'Times New Roman', Times, serif</export>
</exportFonts>
</fontFamily>
<fontFamily name="DejaVu Sans Mono">
<normal>net/sf/jasperreports/fonts/dejavu/DejaVuSansMono.ttf</normal>
<bold>net/sf/jasperreports/fonts/dejavu/DejaVuSansMono-Bold.ttf</bold>
<italic>net/sf/jasperreports/fonts/dejavu/DejaVuSansMono-Oblique.ttf</italic>
<boldItalic>net/sf/jasperreports/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf</boldItalic>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
<exportFonts>
<export key="net.sf.jasperreports.html">'DejaVu Sans Mono', 'Courier New', Courier, monospace</export>
</exportFonts>
</fontFamily>
<!--
Mapping Java logical fonts, for the sake of HTML export only.
-->
<fontFamily name="SansSerif">
<exportFonts>
<export key="net.sf.jasperreports.html">'DejaVu Sans', Arial, Helvetica, sans-serif</export>
</exportFonts>
</fontFamily>
<fontFamily name="Serif">
<exportFonts>
<export key="net.sf.jasperreports.html">'DejaVu Serif', 'Times New Roman', Times, serif</export>
</exportFonts>
</fontFamily>
<fontFamily name="Monospaced">
<exportFonts>
<export key="net.sf.jasperreports.html">'DejaVu Sans Mono', 'Courier New', Courier, monospace</export>
</exportFonts>
</fontFamily>
</fontFamilies>

由于字体不可用而发生错误。工作室给了我同样的错误。问题解决了。我在使用ireport 5.0或ireport 5.6时从未遇到过这种情况,这可能是因为我正在使用的java版本,或者已经配置了字体路径。jasper工作室窗口->偏好->Jaspser工作室->字体在这里添加我给出的字体路径";C:/windwos";

或者你也可以试试下面的选项,有些对你有用

1. Switched from Open JDK to Sun JDK
2. Installed MS Core Fonts
3. Packaged JasperReport font library jar with the application

问题的主要原因是字体

最新更新