Java 在Windows 10上运行时找不到中文字体
我有一个使用JasperReports和JavaSE的应用程序。它嵌入了一些用于报告的字体 该应用程序在Windows10西班牙语版甚至linux(lubuntu)西班牙语版上都能很好地运行。但是,当我尝试在使用Windows 10 zh(繁体中文)的计算机上执行时,它会引发以下异常:Java 在Windows 10上运行时找不到中文字体,java,jasper-reports,Java,Jasper Reports,我有一个使用JasperReports和JavaSE的应用程序。它嵌入了一些用于报告的字体 该应用程序在Windows10西班牙语版甚至linux(lubuntu)西班牙语版上都能很好地运行。但是,当我尝试在使用Windows 10 zh(繁体中文)的计算机上执行时,它会引发以下异常: net.sf.jasperreports.engine.util.JRFontNotFoundException: Font "Microsoft JhengHei" is not available to th
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版本上执行应用程序时,无法获得我已经包含的字体。无论出于何种原因,区域设置都很重要。解决了这个问题。我刚刚在项目的主类中将区域设置更改为一个众所周知的区域设置
Locale.setDefault(Locale.US);
这将为整个应用程序设置US语言环境。可能重复的“否”,不重复。你提到的链接是关于我以前也经历过的另一个问题。当使用Jasperreports时,您需要将TTF附加到要进一步使用的项目。我已经做了这一步,但在中文Windows版本上执行应用程序时,无法获得我已经包含的字体。无论出于何种原因,语言环境都很重要。