OpenTypeFontManager中的NullPointerException

2020-09-04 05:42发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)将报告打印为pdf时,我得到了N...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


将报告打印为pdf时,我得到了NPE

 2018-11-01 14:29:42,392错误com.businessobjects.reports.sdk.JRCCommunicationAdapter [qtp79290965-21](SourceFile:719)-检测到异常:java.lang.NullPointerException at com.crystaldecisions.reports.exporters  .format.page.pdf.fontembedding.opentype.OpenTypeFontManager.a(SourceFile:384)
  在com.crystaldecisions.reports.exporters.format.page.pdf.fontembedding.opentype.OpenTypeFontManager.do(SourceFile:259)
  在com.crystaldecisions.reports.exporters.format.page.pdf.fontembedding.opentype.OpenTypeFontManager.if(SourceFile:77)
  在com.crystaldecisions.reports.exporters.format.page.pdf.fontembedding.FontEmbeddingSession.if(SourceFile:113)
  在com.crystaldecisions.reports.exporters.format.page.pdf.fontembedding.FontEmbeddingSession.a(SourceFile:104)
  在com.crystaldecisions.reports.exporters.format.page.pdf.pdflib.r.if(SourceFile:594)
  在com.crystaldecisions.reports.exporters.format.page.pdf.pdflib.r.a(SourceFile:424)
  在com.crystaldecisions.reports.exporters.format.page.pdf.pdflib.PdfDocumentManager.a(SourceFile:337)
  在com.crystaldecisions.reports.exporters.format.page.pdf.dom.a.a(SourceFile:1584)
  在com.crystaldecisions.reports.exporters.format.page.pdf.dom.a.a(SourceFile:1492)
  在com.crystaldecisions.reports.exporters.format.page.pdf.dom.a.a(SourceFile:780)
  在com.crystaldecisions.reports.exporters.format.page.pdf.dom.a.a(SourceFile:729)
  在com.crystaldecisions.reports.exporters.format.page.pdf.dom.a.a(SourceFile:683)
  在com.crystaldecisions.reports.exporters.format.page.pdf.dom.a.a(SourceFile:2114)
  在com.crystaldecisions.reports.exporters.format.page.pdf.dom.d.if(SourceFile:1829)
  在com.crystaldecisions.reports.exporters.format.page.pdf.dom.d.int(SourceFile:1821)
  在com.crystaldecisions.reports.exporters.format.page.pdf.dom.d.a(SourceFile:455)
  在com.crystaldecisions.reports.exporters.format.page.pdf.dom.d.a(SourceFile:304)
  在com.crystaldecisions.reports.exporters.format.page.pdf.dom.d.a(SourceFile:283)
  在com.crystaldecisions.reports.exporters.format.page.pdf.dom.d.a(SourceFile:283)
  在com.crystaldecisions.reports.exporters.format.page.pdf.dom.b.a(SourceFile:217)
  在com.crystaldecisions.reports.exporters.format.page.pdf.dom.PdfAdvancedDocumentModeller.a(SourceFile:177)
  在com.crystaldecisions.reports.exporters.page.pdf.AdobePDFExporter.a(来源文件:252)
  在com.crystaldecisions.reports.exporters.page.pdf.AdobePDFExporter.processFormattedContent(SourceFile:200)
  在com.crystaldecisions.reports.formatter.export2.a.a(SourceFile:105)
  在com.crystaldecisions.reports.formatter.export2.a.a(SourceFile:253)
  在com.crystaldecisions.reports.formatter.export2.ExportSupervisorEx.if(SourceFile:646)
  在com.crystaldecisions.reports.formatter.export2.ExportSupervisorEx.a(SourceFile:597)
  在com.businessobjects.reports.sdk.requesthandler.ReportViewingRequestHandler.a(SourceFile:641)
  在com.businessobjects.reports.sdk.requesthandler.ReportViewingRequestHandler.int(SourceFile:677)
  在com.businessobjects.reports.sdk.JRCCommunicationAdapter.do(SourceFile:1943)
  在com.businessobjects.reports.sdk.JRCCommunicationAdapter.if(源文件:660)
  在com.businessobjects.reports.sdk.JRCCommunicationAdapter.a(源文件:166)
  在com.businessobjects.reports.sdk.JRCCommunicationAdapter $ 2.a(源文件:528)
  在com.businessobjects.reports.sdk.JRCCommunicationAdapter $ 2.call(源文件:525)
  在com.crystaldecisions.reports.common.ThreadGuard.syncExecute(SourceFile:102)
  在com.businessobjects.reports.sdk.JRCCommunicationAdapter.for(源文件:524)
  在com.businessobjects.reports.sdk.JRCCommunicationAdapter.int(SourceFile:423)
  在com.businessobjects.reports.sdk.JRCCommunicationAdapter.request(SourceFile:351)
  在com.businessobjects.sdk.erom.jrc.a.a(SourceFile:54)
  在com.businessobjects.sdk.erom.jrc.a.execute(SourceFile:67)
  在com.crystaldecisions.proxy.remoteagent.RemoteAgent $ a.execute(SourceFile:716)
  在com.crystaldecisions.proxy.remoteagent.CommunicationChannel.a(SourceFile:125)
  在com.crystaldecisions.proxy.remoteagent.RemoteAgent.a(SourceFile:537)
  在com.crystaldecisions.sdk.occa.report.application.dt.a(SourceFile:186)
  在com.crystaldecisions.sdk.occa.report.application.ReportSource.a(SourceFile:1558)
  在com.crystaldecisions.sdk.occa.report.application.ReportSource.a(SourceFile:337)
  在com.crystaldecisions.sdk.occa.report.application.PrintOutputController.if(SourceFile:224)
  在com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(SourceFile:148)
  在com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(SourceFile:129)
  在com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(SourceFile:112)

在alpine openjdk 1.8.0_171(在Docker中)上运行

crjava 12.2.224

我曾尝试将$ JAVA_HOME/lib/fonts目录从Oracle JRE复制到此jre中,但这引起了另一个问题:

"页面区域太大"

有什么提示吗?

编辑:

已通过安装Windows字体并将其复制到Java目录进行修复

 apk add --no-cache msttcorefonts-installer && update-ms-fonts && fc-cache -f && ln -s/usr/share/fonts/truetype/msttcorefonts/usr/lib/jvm/default-jvm/jre/lib/fonts
 
2条回答
wang628962
2020-09-04 05:59

您好! 只是更新,以防其他人...

在使用AdoptOpenJDK 8时,我还在Windows 10的JRCCommunicationAdapter中遇到了类似的NPE。特定的报表到处都使用Arial字体,并且在报表查看器中显示良好,但是NPE在尝试导出为PDF时发生。

经过一些试验,一种解决方法是在AdoptOpenJDK JRE中创建字体文件夹(jre \ lib \ fonts),然后将上述Linux msttcorefonts中的单个字体文件复制到新创建的fonts文件夹中。 我的文档使用了所有Arial字体,但是fonts文件夹中的字体文件似乎并不重要。 我复制了Webdings.ttf。 该文件必须是真实的字体文件。 我尝试制作一个虚拟文本文件并将其重命名为Webdings.ttf,但是NPE出现在虚拟字体文件中。

将真实字体复制到jre \ lib \ fonts后,将使用嵌入的Arial字体创建PDF。 似乎只需要在jre \ lib \ fonts使用一种真实的字体即可开始使用,然后crjava/AdoptOpenJDK最终将使用fontconfig查找正确的Windows字体。

一周热门 更多>