Одна из функций — отображение содержимого 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, возникает ошибка, сообщения журнала приведены ниже.
12.11.2024-09:10:42 ОШИБКА PDFStreamEngine(935) — невозможно прочитать изображение JPEG2000: инструменты ввода-вывода изображений Java Advanced Imaging (JAI) не установлены
org.apache.pdfbox .filter.MissingImageReaderException: невозможно прочитать изображение JPEG2000: инструменты ввода-вывода изображений Java Advanced Imaging (JAI) не поддерживаются. установлен
в org.apache.pdfbox.filter.Filter.findImageReader(Filter.java:172) ~[CoverSheetCreatorFX_new.jar:?]
в org.apache.pdfbox.filter.JPXFilter.readJPX(JPXFilter .java:123) ~[CoverSheetCreatorFX_new.jar:?]
в org.apache.pdfbox.filter.JPXFilter.decode(JPXFilter.java:72) ~[CoverSheetCreatorFX_new.jar:?]
в org.apache.pdfbox. filter.Filter.decode(Filter.java:254) ~[CoverSheetCreatorFX_new.jar:?]
в org.apache.pdfbox.cos.COSInputStream.create(COSInputStream.java:73) ~[CoverSheetCreatorFX_new.jar:?]
в 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 (SampleImageReader.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:?]
на org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject.getImage (PDImageXObject.java:438) ~[CoverSheetCreatorFX_new.jar:?]
в org.apache.pdfbox.rendering.PageDrawer.drawImage(PageDrawer.java:1248) ~[CoverSheetCreatorFX_new.jar:?]
в 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:?]
в org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:330) ~[CoverSheetCreatorFX_new.jar:?]
в org.apache.pdfbox. рендеринг.PDFRenderer.renderImage(PDFRenderer.java:247) ~[CoverSheetCreatorFX_new.jar:?]
на org.apache.pdfbox.rendering.PDFRenderer.renderImageWithDPI(PDFRenderer.java:219) ~[CoverSheetCreatorFX_new.jar:?]
Эта ошибка не возникает при работе в IntelliJ. Я думаю, что процесс сборки с pom.xml делает что-то неожиданное, и основной причиной является другой путь к пакету com.github.jai-imageio в 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