“如何修复”;无法读取JPEG2000图像:未安装Java高级图像(JAI)图像I/O工具;

“如何修复”;无法读取JPEG2000图像:未安装Java高级图像(JAI)图像I/O工具;,java,pdfbox,apache-tika,jai,Java,Pdfbox,Apache Tika,Jai,我正在建立一个java项目,使用pdfBox从PDF中获取图像。因为我在使用tika应用程序实现其他功能,所以我决定使用tika-app-1.20.jar中的pdfBox 我曾经尝试过包含jai-imageio-core-1.3.1.jar,因为Tika应用程序已经与这个jar捆绑在一起。我试过单独使用tika应用程序jar 抛出错误的那条线 PDXObject object=resources.getXObject(cosName) 错误的日志跟踪: org.apache.pdfbox.fil

我正在建立一个java项目,使用pdfBox从PDF中获取图像。因为我在使用tika应用程序实现其他功能,所以我决定使用tika-app-1.20.jar中的pdfBox

我曾经尝试过包含jai-imageio-core-1.3.1.jar,因为Tika应用程序已经与这个jar捆绑在一起。我试过单独使用tika应用程序jar

抛出错误的那条线

PDXObject object=resources.getXObject(cosName)

错误的日志跟踪:

org.apache.pdfbox.filter.MissingImageReaderException: Cannot read JPEG2000 image: Java Advanced Imaging (JAI) Image I/O Tools are not installed
    at org.apache.pdfbox.filter.Filter.findImageReader(Filter.java:163)
    at org.apache.pdfbox.filter.JPXFilter.readJPX(JPXFilter.java:115)
    at org.apache.pdfbox.filter.JPXFilter.decode(JPXFilter.java:64)
    at org.apache.pdfbox.cos.COSInputStream.create(COSInputStream.java:77)
    at org.apache.pdfbox.cos.COSStream.createInputStream(COSStream.java:175)
    at org.apache.pdfbox.cos.COSStream.createInputStream(COSStream.java:163)
    at org.apache.pdfbox.pdmodel.common.PDStream.createInputStream(PDStream.java:236)
    at org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject.<init>(PDImageXObject.java:140)
    at org.apache.pdfbox.pdmodel.graphics.PDXObject.createXObject(PDXObject.java:70)
    at org.apache.pdfbox.pdmodel.PDResources.getXObject(PDResources.java:426)
org.apache.pdfbox.filter.MissingImageReaderException:无法读取JPEG2000图像:未安装Java高级图像(JAI)图像I/O工具
位于org.apache.pdfbox.filter.filter.findImageReader(filter.java:163)
位于org.apache.pdfbox.filter.JPXFilter.readJPX(JPXFilter.java:115)
位于org.apache.pdfbox.filter.JPXFilter.decode(JPXFilter.java:64)
位于org.apache.pdfbox.cos.COSInputStream.create(COSInputStream.java:77)
位于org.apache.pdfbox.cos.costream.createInputStream(costream.java:175)
位于org.apache.pdfbox.cos.costream.createInputStream(costream.java:163)
位于org.apache.pdfbox.pdmodel.common.PDStream.createInputStream(PDStream.java:236)
位于org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject.(PDImageXObject.java:140)
位于org.apache.pdfbox.pdmodel.graphics.PDXObject.createXObject(PDXObject.java:70)
位于org.apache.pdfbox.pdmodel.PDResources.getXObject(PDResources.java:426)

但是我很确定我在tika中有jai-imageio内核,当我运行代码时,它是不可见的。

它需要一个额外的jai-imageio-jpeg2000 jai-imageio-jpeg2000
为了支持jp2k图像。

实际上,我也偶然发现了这个错误,但PDFBox文档中提到了这一点。您需要将以下依赖项添加到
pom.xml


com.github.jai-imageio
jai图像核心
1.4.0
com.github.jai-imageio
jai-imageio-jpeg2000
1.3.0
org.apache.pdfbox
jbig2图像
3.0.3
如果您正在使用Gradle:

dependencies {
    implementation 'com.github.jai-imageio:jai-imageio-core:1.4.0'
    implementation 'com.github.jai-imageio:jai-imageio-jpeg2000:1.3.0'

    // Optional for you ; just to avoid the same error with JBIG2 images
    implementation 'org.apache.pdfbox:jbig2-imageio:3.0.3'
}

呃,嗯,安装工具?