Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Windows 10上运行时找不到中文字体_Java_Jasper Reports - Fatal编程技术网

Java 在Windows 10上运行时找不到中文字体

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

我有一个使用JasperReports和JavaSE的应用程序。它嵌入了一些用于报告的字体

该应用程序在Windows10西班牙语版甚至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版本上执行应用程序时,无法获得我已经包含的字体。无论出于何种原因,区域设置都很重要。

解决了这个问题。我刚刚在项目的主类中将区域设置更改为一个众所周知的区域设置

Locale.setDefault(Locale.US);

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

可能重复的“否”,不重复。你提到的链接是关于我以前也经历过的另一个问题。当使用Jasperreports时,您需要将TTF附加到要进一步使用的项目。我已经做了这一步,但在中文Windows版本上执行应用程序时,无法获得我已经包含的字体。无论出于何种原因,语言环境都很重要。