Problem:
Beim Erstellen des Berichts erhalte ich manchmal die folgende Fehlermeldung:
Code: Select all
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)
Beobachtungen:< /p>
Der Bericht verwendet die Eigenschaft isStretchWithOverflow="true" an 533 Stellen.
Wenn der Fehler auftritt:
Ich habe vorübergehend isStretchWithOverflow="false" für alle Felder festgelegt und die Der Bericht funktioniert einwandfrei.
Diese Eigenschaft ist jedoch für meinen Bericht unerlässlich, daher muss ich sie erneut aktivieren.
Zum Debuggen aktiviere ich die Eigenschaft in Blöcken, zum Beispiel:
Aktivieren Sie es für 50 Felder, führen Sie den Bericht aus und prüfen Sie, ob der Fehler auftritt.
Wenn kein Fehler auftritt, gehe ich zu den nächsten 50 Feldern usw.
Wenn der Fehler auftritt In einem bestimmten Abschnitt schränke ich es auf kleinere Bereiche ein (z. B. 10 Felder), um das problematische Feld zu finden.
Das Merkwürdige daran: Das problematische Feld ändert sich jedes Mal, wenn ich den Bericht ausführe. Beispiel:
In einem Lauf könnte der Fehler für Tabelle X1 auftreten.
Nachdem die Tabelle repariert oder getestet wurde, könnte der Fehler das nächste Mal für Tabelle X5 auftreten.
Was ich versucht habe:
Vorübergehende Einstellung von isStretchWithOverflow="false" für alle Felder.
Testen in kleinere Stücke, um das problematische Feld zu finden.
Debugging-Protokolle, aber sie zeigen nur die gleiche Nullzeiger-Ausnahme, ohne auf das spezifische Feld oder den Grund zu verweisen.
Frage:
Was könnte dieses zufällige Verhalten bei isStretchWithOverflow="true" verursachen?
Wie kann ich das effektiv debuggen oder das Problem beheben?
Gibt es eine bessere Möglichkeit, mit dynamischen Inhalten in großen JasperReports umzugehen? viele Tabellen und Felder?
Für Hinweise oder Vorschläge wäre ich sehr dankbar!