Получение NullPointerException с JasperReports в многопоточном приложении - PullRequest
0 голосов
/ 12 июня 2018

Я получаю эту ошибку, когда пытаюсь использовать JasperReports в многопоточном режиме.

java.lang.NullPointerException
 at java.awt.color.ICC_Profile.activateDeferredProfile(ICC_Profile.java:1086) ~[?:1.7.0_80]
 at java.awt.color.ICC_Profile$1.activate(ICC_Profile.java:742) ~[?:1.7.0_80]
 at sun.java2d.cmm.ProfileDeferralMgr.activateProfiles(ProfileDeferralMgr.java:95) ~[?:1.7.0_80]
 at java.awt.color.ICC_Profile.getInstance(ICC_Profile.java:775) ~[?:1.7.0_80]
 at com.lowagie.text.Jpeg.processParameters(Unknown Source) ~[redoute-vendororderlifecycle-batch-deliverynotecrt-96.0.jar:96.0.0]
 at com.lowagie.text.Jpeg.<init>(Unknown Source) ~[redoute-vendororderlifecycle-batch-deliverynotecrt-96.0.jar:96.0.0]
 at com.lowagie.text.Image.getInstance(Unknown Source) ~[redoute-vendororderlifecycle-batch-deliverynotecrt-96.0.jar:96.0.0]
 at net.sf.jasperreports.engine.export.JRPdfExporter$InternalImageProcessor.processImageRetainShape(JRPdfExporter.java:1742)

Это ошибка в Java, поскольку 1.6

Загрузка цветовых профилей ICC из нескольких потоков иногда вызывает исключение нулевого указателя внутри класса JRE ICC_Profile.

В настоящее время я решаю эту проблему, вызывая функцию экспорта в PDF JasperReports в синхронизированную функцию, но это похоже на узкое место в многопоточном приложении.

@ fabiofdsantos говорят на GitHub это:

"Поскольку jasperreports использует Lowagie (устарело с 2012 года), возможный обходной путь - вызвать Image.getInstance (renderer.getData (jasperReportsContext)); синхронизирован."

Но у меня естья не знаю, как это сделать с JasperReports и таким же образом он использует синхронизированный метод в конце, но, возможно, это лучшее решение, чем мое.

1 Ответ

0 голосов
/ 12 июня 2018

Я выяснил эту проблему, заменив все изображения JPEG в моем проекте, которые использовались файлами яшмы.Я использовал изображение PNG вместо JPEG.Даже мне не нужно использовать синхронизированный метод.

...