Проблема:
При создании отчета иногда возникает следующая ошибка:
Код: Выделить всё
java.lang.NullPointerException: null at net.sf.jasperreports.engine.fill.FillerSubreportParent.isSplitTypePreventInhibited(FillerSubreportParent.java:116) at net.sf.jasperreports.engine.fill.JRFillBand.isSplitTypePreventInhibited(JRFillBand.java:633) at net.sf.jasperreports.engine.fill.JRFillBand.isSplitTypePreventInhibited(JRFillBand.java:612) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2589) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:813) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:264) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:110) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:615) at net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFiller.java:432) at net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:818) at net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:61) at net.sf.jasperreports.engine.fill.AbstractThreadSubreportRunner.run(AbstractThreadSubreportRunner.java:221) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)
Наблюдения:< /p>
Свойство isStretchWithOverflow="true" в отчете используется в 533 местах.
Когда возникает ошибка:
Я временно установил isStretchWithOverflow="false" для всех полей, и отчет работает нормально.
Однако это свойство важно для моего отчета, поэтому мне нужно снова включить его.
Для отладки я включаю это свойство частями, например:
Включите его для 50 полей, запустите отчет и проверьте, возникает ли ошибка.
Если ошибок нет, я перехожу к следующим 50 полям и так далее.
Если ошибка ошибка происходит в определенном куске, я сужаю его до меньшего диапазоны (например, 10 полей), чтобы найти проблемное поле.
Странная часть: проблемное поле меняется каждый раз, когда я запускаю отчет. Например:
При одном запуске ошибка может возникнуть в таблице X1.
После исправления или тестирования этой таблицы ошибка может возникнуть в таблице X5 в следующий раз.
Ошибка может возникнуть в таблице X1.
p>
Что я пробовал:
Временно установить isStretchWithOverflow="false" для всех полей.
Тестирование в меньшие куски, чтобы найти проблематичные поле.
Журналы отладки, но они показывают только одно и то же исключение нулевого указателя без указания на конкретное поле или причину.
Вопрос:
Что может быть причиной такого случайного поведения с isStretchWithOverflow="true"?
Как я могу эффективно отладить это или устранить проблему ?
Есть ли лучший способ обрабатывать динамический контент в больших отчетах JasperReports со множеством таблиц и полей?
Будем очень признательны за любые рекомендации и предложения!
Подробнее здесь: https://stackoverflow.com/questions/793 ... inter-exce