在Windows 10上运行时无法找到该字体

时间:2016-03-22 20:07:00

标签: java jasper-reports

我有一个使用JasperReports和Java SE的应用程序。它嵌入了一些要在报告中使用的字体。

该应用程序就像Windows 10西班牙语版的魅力,甚至是西班牙语的linux(lubuntu)。但是,当我尝试在装有Windows 10 zh(繁体中文)的计算机上执行它时,会抛出此异常:

net.sf.jasperreports.engine.util.JRFontNotFoundException: Font "Microsoft JhengHei" is not available to the JVM. See the Javadoc for more details.
at net.sf.jasperreports.engine.fonts.FontUtil.checkAwtFont(FontUtil.java:360)
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:672)
at net.sf.jasperreports.engine.fill.JRFillStaticText.prepare(JRFillStaticText.java:186)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements(JRFillElementContainer.java:352)
at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:421)
at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:396)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillTitle(JRVerticalFiller.java:317)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:251)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:119)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:558)
at net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFiller.java:414)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:122)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:667)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:983)
at sample.controller.ReportGenerator.fillInReport(ReportGenerator.java:213)
at sample.view.Main$5.run(Main.java:271)
at java.lang.Thread.run(Unknown Source)

我完全迷失了,我不知道我可以从哪里开始。 如果你们中有人有任何建议,我会尝试一下。

编辑:

使用Jasperreports时,您需要将TTF附加到项目中以便进一步使用。我已经做了这一步但是在中文Windows版本上执行我的应用程序时无法获得我已经包含的字体。出于任何原因,语言环境很重要。

1 个答案:

答案 0 :(得分:0)

解决。我刚刚在项目的主要类中更改了一个众所周知的语言环境。

Locale.setDefault(Locale.US);

这将为整个应用程序设置美国语言环境。