Одна из функций — отображение содержимого PDF-файлов. в компоненте ImageView JavaFx. Некоторые изображения, встроенные в файлы PDF, имеют формат jpeg2000. Итак, в pom.xml программы добавляются следующие зависимости:
Код: Выделить всё
com.github.jai-imageio
jai-imageio-core
1.4.0
com.github.jai-imageio
jai-imageio-jpeg2000
1.3.0
org.apache.pdfbox
jbig2-imageio
3.0.0
[img]https: //i.sstatic.net/O6xT5z18.png[/img]
Когда я запускаю программу в IntelliJ (версия сообщества 2024.2.4), она работает хорошо. Изображения (включая jpeg2000) в файлах PDF отображаются правильно.
Затем я запускаю «очистку» и «упаковку» в pom.xml (внутри IntelliJ), создается файл fat-JAR. созданный. Я проверяю содержимое файла jar, оно выглядит, как показано ниже, с другим именем пути.
[img]https://i. sstatic.net/Tc3tO0Jj.png[/img]
Когда я запускаю этот исполняемый файл jar и загружаю PDF-файл, в который встроено изображение jpeg2000, возникает ошибка, сообщения журнала приведены ниже.
Код: Выделить всё
11/12/2024-09:10:42 ERROR PDFStreamEngine(935) - Cannot read JPEG2000 image: Java Advanced Imaging (JAI) Image I/O Tools are not installed
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:172) ~[CoverSheetCreatorFX_new.jar:?]
at org.apache.pdfbox.filter.JPXFilter.readJPX(JPXFilter.java:123) ~[CoverSheetCreatorFX_new.jar:?]
at org.apache.pdfbox.filter.JPXFilter.decode(JPXFilter.java:72) ~[CoverSheetCreatorFX_new.jar:?]
at org.apache.pdfbox.filter.Filter.decode(Filter.java:254) ~[CoverSheetCreatorFX_new.jar:?]
at org.apache.pdfbox.cos.COSInputStream.create(COSInputStream.java:73) ~[CoverSheetCreatorFX_new.jar:?]
at org.apache.pdfbox.cos.COSStream.createInputStream(COSStream.java:172) ~[CoverSheetCreatorFX_new.jar:?]
at org.apache.pdfbox.pdmodel.common.PDStream.createInputStream(PDStream.java:193) ~[CoverSheetCreatorFX_new.jar:?]
at org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject.createInputStream(PDImageXObject.java:895) ~[CoverSheetCreatorFX_new.jar:?]
at org.apache.pdfbox.pdmodel.graphics.image.SampledImageReader.from8bit(SampledImageReader.java:469) ~[CoverSheetCreatorFX_new.jar:?]
at org.apache.pdfbox.pdmodel.graphics.image.SampledImageReader.getRGBImage(SampledImageReader.java:217) ~[CoverSheetCreatorFX_new.jar:?]
at org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject.getImage(PDImageXObject.java:477) ~[CoverSheetCreatorFX_new.jar:?]
at org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject.getImage(PDImageXObject.java:438) ~[CoverSheetCreatorFX_new.jar:?]
at org.apache.pdfbox.rendering.PageDrawer.drawImage(PageDrawer.java:1248) ~[CoverSheetCreatorFX_new.jar:?]
at org.apache.pdfbox.contentstream.operator.graphics.DrawObject.process(DrawObject.java:74) ~[CoverSheetCreatorFX_new.jar:?]
at org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:893) ~[CoverSheetCreatorFX_new.jar:?]
at org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:531) ~[CoverSheetCreatorFX_new.jar:?]
at org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:506) ~[CoverSheetCreatorFX_new.jar:?]
at org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:153) ~[CoverSheetCreatorFX_new.jar:?]
at org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:286) ~[CoverSheetCreatorFX_new.jar:?]
at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:330) ~[CoverSheetCreatorFX_new.jar:?]
at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:247) ~[CoverSheetCreatorFX_new.jar:?]
at org.apache.pdfbox.rendering.PDFRenderer.renderImageWithDPI(PDFRenderer.java:219) ~[CoverSheetCreatorFX_new.jar:?]
Кстати , в среде разработки на моем компьютере используется Java 8.
Раздел «сборка» в pom.xml приведен ниже,
Код: Выделить всё
org.apache.maven.plugins
maven-assembly-plugin
package
single
CoverSheetCreatorFX
jar-with-dependencies
false
Или, если моя догадка верна неправильно, тогда что мне делать дальше?
Подробнее здесь: https://stackoverflow.com/questions/791 ... e-to-local