java - Apache PDFBox 和 CodenameOne 桌面应用程序

标签 java pdfbox codenameone

我有一个 CodenameOne 项目已基本完成,我需要将桌面版本与 PDFBox 集成。我正在尝试打开文档并将页面渲染到我在应用程序中显示的图像。

我收到以下错误:

java.lang.NoClassDefFoundError: Could not initialize class org.apache.pdfbox.pdmodel.font.PDTrueTypeFont
    at org.apache.pdfbox.pdmodel.font.PDFontFactory.createFont(PDFontFactory.java:100)
    at org.apache.pdfbox.pdmodel.PDResources.getFonts(PDResources.java:213)
    at org.apache.pdfbox.util.PDFStreamEngine.getFonts(PDFStreamEngine.java:607)
    at org.apache.pdfbox.util.operator.SetTextFont.process(SetTextFont.java:59)
    at org.apache.pdfbox.util.PDFStreamEngine.processOperator(PDFStreamEngine.java:557)
    at org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:268)
    at org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:235)
    at org.apache.pdfbox.util.PDFStreamEngine.processStream(PDFStreamEngine.java:215)
    at org.apache.pdfbox.pdfviewer.PageDrawer.drawPage(PageDrawer.java:139)
    at org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java:801)
    at co.za.gingetsuryuu.pdfreader.PDFInterfaceImpl$1.run(PDFInterfaceImpl.java:69)
    at java.lang.Thread.run(Thread.java:745)
java.lang.NoClassDefFoundError: Could not initialize class org.apache.pdfbox.pdmodel.font.PDTrueTypeFont
    at org.apache.pdfbox.pdmodel.font.PDFontFactory.createFont(PDFontFactory.java:100)
    at org.apache.pdfbox.pdmodel.PDResources.getFonts(PDResources.java:213)
    at org.apache.pdfbox.util.PDFStreamEngine.getFonts(PDFStreamEngine.java:607)
    at org.apache.pdfbox.util.operator.SetTextFont.process(SetTextFont.java:59)
    at org.apache.pdfbox.util.PDFStreamEngine.processOperator(PDFStreamEngine.java:557)
    at org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:268)
    at org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:235)
    at org.apache.pdfbox.util.PDFStreamEngine.processStream(PDFStreamEngine.java:215)
    at org.apache.pdfbox.pdfviewer.PageDrawer.drawPage(PageDrawer.java:139)
    at org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java:801)
    at co.za.gingetsuryuu.pdfreader.PDFInterfaceImpl$1.run(PDFInterfaceImpl.java:69)
    at java.lang.Thread.run(Thread.java:745)
java.lang.NoClassDefFoundError: Could not initialize class org.apache.pdfbox.pdmodel.font.PDTrueTypeFont
    at org.apache.pdfbox.pdmodel.font.PDFontFactory.createFont(PDFontFactory.java:100)
    at org.apache.pdfbox.pdmodel.PDResources.getFonts(PDResources.java:213)
    at org.apache.pdfbox.util.PDFStreamEngine.getFonts(PDFStreamEngine.java:607)
    at org.apache.pdfbox.util.operator.SetTextFont.process(SetTextFont.java:59)
    at org.apache.pdfbox.util.PDFStreamEngine.processOperator(PDFStreamEngine.java:557)
    at org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:268)
    at org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:235)
    at org.apache.pdfbox.util.PDFStreamEngine.processStream(PDFStreamEngine.java:215)
    at org.apache.pdfbox.pdfviewer.PageDrawer.drawPage(PageDrawer.java:139)
    at org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java:801)
    at co.za.gingetsuryuu.pdfreader.PDFInterfaceImpl$1.run(PDFInterfaceImpl.java:69)
    at java.lang.Thread.run(Thread.java:745)

我彻底迷失了。我已经检查过库是否包含在内,它能够渲染一两个页面,但仅此而已。我什至检查过该函数确实存在,而且确实存在。

最佳答案

问题似乎出在 Codename One 构建过程的方式上。通过将 jar 文件包含在结果项目中并使它们在 jar 加载顺序中加载得比 app.jar 文件更高,问题就得到了解决。

关于java - Apache PDFBox 和 CodenameOne 桌面应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28585444/

相关文章:

codenameone - 将标签置于 Codename One 中边框布局的南部容器的中心

java - 查询数据库中的对象列表,以便从该列表创建对象 : proper way to do

java - 批量插入导致失败

java - 尝试使用 JNI 组件启动 Android + OpenCV 文件时出现令人困惑的 UnsatisfiedLinkError

java - PDFBox使用adbe.x509.rsa_sha1时在签名字典中指定cert

java - 用java生成柱形图

java - PDFbox,字体异常(exception)

android - CodenameOne 的 iOS 构建失败

java - 如何使用 JAXB 解码输入流?

ios - iOS 上的 UIDevice Battery State 在电池状态更改时不会更新