Fonts 为什么在Linux下会出现这种字体问题?
我使用下面的代码生成jasper报告,该代码在windows下运行良好。 jasper报告中的字体已嵌入。使用maven依赖项jasperreports字体将字体导入应用程序。特别是DeJaVu SansFonts 为什么在Linux下会出现这种字体问题?,fonts,jasper-reports,Fonts,Jasper Reports,我使用下面的代码生成jasper报告,该代码在windows下运行良好。 jasper报告中的字体已嵌入。使用maven依赖项jasperreports字体将字体导入应用程序。特别是DeJaVu Sans JasperDesign jasperDesign = JRXmlLoader.load(jasperStream); JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign); JasperPri
JasperDesign jasperDesign = JRXmlLoader.load(jasperStream);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, jrDataSource);
JasperViewer.viewReport(jasperPrint, false);
但是,在linux环境中部署应用程序时,会显示以下错误:
java.lang.ExceptionInInitializerError
Caused by: net.sf.jasperreports.engine.JRRuntimeException: java.io.IOException: Problem reading font data.
at net.sf.jasperreports.engine.fonts.SimpleFontFace.<init>(SimpleFontFace.java:108)
at net.sf.jasperreports.engine.fonts.SimpleFontFace.<init>(SimpleFontFace.java:128)
at net.sf.jasperreports.engine.fonts.SimpleFontFace.getInstance(SimpleFontFace.java:67)
at net.sf.jasperreports.engine.fonts.SimpleFontFamily.setNormal(SimpleFontFamily.java:99)
Caused by: java.io.IOException: Problem reading font data.
at java.awt.Font.createFont0(Font.java:1000)
at java.awt.Font.createFont(Font.java:877)
java.lang.ExceptionInInitializeError
原因:net.sf.jasperreports.engine.JRRuntimeException:java.io.IOException:读取字体数据时出现问题。
位于net.sf.jasperreports.engine.fonts.SimpleFontFace.(SimpleFontFace.java:108)
位于net.sf.jasperreports.engine.fonts.SimpleFontFace.(SimpleFontFace.java:128)
位于net.sf.jasperreports.engine.fonts.SimpleFontFace.getInstance(SimpleFontFace.java:67)
位于net.sf.jasperreports.engine.fonts.SimpleFontFamily.setNormal(SimpleFontFamily.java:99)
原因:java.io.IOException:读取字体数据时出现问题。
位于java.awt.Font.createFont0(Font.java:1000)
位于java.awt.Font.createFont(Font.java:877)
扼杀这可能是一个java.io.tmpdir
问题
更改临时目录的权限或根据需要进行设置
System.setProperty("java.io.tmpdir","whereYouLike");
有关更多信息,请参阅:
注意:如果您正在使用tomcat(可能是使用tomcat的temp dir),最好添加:
-Djava.awt.headless=true
扼杀这可能是一个
java.io.tmpdir
问题
更改临时目录的权限或根据需要进行设置
System.setProperty("java.io.tmpdir","whereYouLike");
有关更多信息,请参阅:
注意:如果您正在使用tomcat(可能是使用tomcat的temp dir),最好添加:
-Djava.awt.headless=true
不幸的是,这些建议都不起作用。如果我把headless设置为true,那么它会抛出java.awt.HeadlessException异常,我使用的是Jettyserver@n1ckgun我仍然认为这是暂时的目录问题,如果我试图通过如下方式指定临时目录来启动jetty,这可能会有所帮助:/usr/bin/java-Djetty.state=/jetty/jetty.state-Djetty.port=8080-Xmx1024m-Djetty.logs=/jetty/logs/-Djetty.home=/jetty-Djava.io.tmpdir=/jetty/tempdir-jar/start.jar等/jetty-logging.xml等/jetty-start.xml where/jetty/tempdir没有任何问题permissions@n1ckgun尝试检查它正在使用Sys out getProperty(“java.io.tmpdir”)的临时控制器是否已检查。它是临时目录。路径是正确的,不幸的是,所有建议都不起作用。如果我把headless设置为true,那么它会抛出java.awt.HeadlessException异常,我使用的是Jettyserver@n1ckgun我仍然认为这是暂时的目录问题,如果我试图通过如下方式指定临时目录来启动jetty,这可能会有所帮助:/usr/bin/java-Djetty.state=/jetty/jetty.state-Djetty.port=8080-Xmx1024m-Djetty.logs=/jetty/logs/-Djetty.home=/jetty-Djava.io.tmpdir=/jetty/tempdir-jar/start.jar等/jetty-logging.xml等/jetty-start.xml where/jetty/tempdir没有任何问题permissions@n1ckgun尝试检查它正在使用Sys out getProperty(“java.io.tmpdir”)的临时控制器是否已检查。它是临时目录。这条路是正确的