java - JBig2在运行时无法解析?

标签 java gradle pdfbox jbig2

我有一个使用PDFBox将PDF转换为PNG的Java / Gradle应用程序。在我的IDE上进行本地测试时,我的代码如下:

public static void main(String[] args) throws IOException {
    PDDocument doc = PDDocument.load(new File("pdfFile.pdf"));
    PDFRenderer renderer = new PDFRenderer(doc);
    OutputStream os = new FileOutputStream(new File("image.png"));
    ImageIO.write(renderer.renderImageWithDPI(0, 300), "png", os);
}
在产品中,另一个应用程序启动一个新的JVM,该JVM运行我的应用程序。我不确定父应用程序的类路径是什么,但是如果我的Gradle依赖项中包含以下内容,这有关系吗?
implementation "org.apache.pdfbox:jbig2-imageio:3.0.2"
在IDE上本地测试我的主要方法时,它可以正常工作,但不能使用我描述的第二种设置。我还检查了 list ,可以看到以下文件:
META-INF/services/javax.imageio.spi.ImageReaderSpi
META-INF/services/javax.imageio.spi.ImageWriterSpi 
我想念什么?

最佳答案

我答复您的评论作为答复,因为否则格式/空间有限。
我们使用slf4j将所有公用日志“重定向”到log4j。您必须在日志中添加以下依赖项-然后在为pdfbox添加附加程序后,它将记录到标准日志文件中...

<!-- PdfBox is using Apache commons logging. To force this to use log4j2 the following lib has to be used -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>1.7.30</version>
</dependency>
关于第二个问题:不一定。所有这些库都可以在classpath上使用吗?
没有任何错误消息,实际上很难弄清楚到底发生了什么。您可以看到控制台吗?如果是这样,请使用以下代码检查您的类是否在那里。
try {
    Class<?> clazz = Class.forName("org.apache.pdfbox.pdmodel.PDDocument");
} 
catch (ClassNotFoundException e) {
    System.err.println("PdfBox classes not found!");
}

关于java - JBig2在运行时无法解析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63472959/

相关文章:

android - 在gradle中执行shell脚本看不到echo输出

继承人库中不存在Android gradle包R

java - 在 FMJ 中找不到捕获设备

java - 将 WebServiceTemplate 与 keystore 一起使用

java - Eclipse SVN 项目找不到 .class 文件

java - 将字体添加到 Apache Pdfbox?

java - PDFBox 图像元数据

java - 如何显示retrofit中的所有数据?

java - Gradle 传递依赖解析

pdf - CTM矩阵乘法与先前状态与PDF位置解析中的单位矩阵?