Problem mit JasperReports

Joob

Top Contributor
Ich bekomme folgende Fehlermeldung von Jasperreports
Error retrieving field value from bean: dayName.

in der Zeile:
Code:
JasperPrint jasperPrint = JasperFillManager.fillReport(basReport, paramsrep , datasource);

Daraufhin habe ich mein jrxml geprüft. Sieht meiner Meinung nach richtig aus.
Code:
 <field name="dayName" class="java.lang.String">

        <fieldDescription><![CDATA[dayName]]></fieldDescription>

    </field>



Dann habe ich meine Klasse geprüft. (eine innerClass)
Code:
        public String getDayName() {

            return dayName;

        }



        public void setDayName(String dayName) {

            this.dayName = dayName;

        }

Dann habe ich meine datasource gedebugt:
auch hier finde ich dayName
1668713557563.png

Das Problem betrifft auch mein ganzes Projekt, ich kann nichts mehr drucken und jeder Bericht meldet das er ein Value nicht finden kann.
Ich habe auch schon gegoogelt, in der Regel läuft es auf Tippfehler raus,
es gibt aber auch andere Hinweise, ich weiß aber nicht was die damit meinen.

Es muss etwas mit der Projektstruktur zu tun haben, aber was.
Die anderen Elemente von Jasper laufen ja,

Java:
                    JasperReport basReport = JasperCompileManager.compileReport(getClass().getResourceAsStream("/PVA00000/Report/WeekplanUser.jrxml"));
                    HashMap paramsrep = getJaslanghasmap();
                    JRDataSource datasource = new JRBeanCollectionDataSource(printData, true);

                    // Report bauen und anzeigen
                    JasperPrint jasperPrint = JasperFillManager.fillReport(basReport, paramsrep , datasource);
Kann mir jemand einen Tipp geben wo ich suchen soll ?
 
Zuletzt bearbeitet:
Ich hab keine Ahnung von JasperReports - aber data ist eine Liste. Musst vermutlich erst über die Liste iterieren bevor du auf den dayName zugreifen kannst.
 
Ich bekomme nicht mehr. Aber wenn ich debugge kann ich die Stelle ausmachen die den Fehler zeigt sehen.
1668723614386.png

Sagt Dir das was ?

Kommt aus der Klasse FutureTask.java
Java:
 public void run() {
        if (state != NEW ||
            !RUNNER.compareAndSet(this, null, Thread.currentThread()))
            return;
        try {
            Callable<V> c = callable;
            if (c != null && state == NEW) {
                V result;
                boolean ran;
                try {
                    result = c.call();
                    ran = true;
                } catch (Throwable ex) {
                    result = null;
                    ran = false;
                    setException(ex);
                }
                if (ran)
                    set(result);
            }

Ich weiß nicht wie das bewerten soll.
Kann ich von Jasper differenzierter Meldung bekommen ?
 
Ich bin aber ganz sicher das die Fehlermeldung in die Irre führt, da das Problem bei allen Reports existiert und alle bis vor einigen Wochen noch gelaufen haben.
 
Wo kann man im Jasper Reports differenzierte Fehlermeldungen einstellen ?
Das, was hier gemeint ist: Der Code, der die Exception wirft (also Dein Code - das dürfte das sein, was Du in #1 gezeigt hast mit dem fillReport), dort musst Du dann sicher stellen, dass die ganze Exception ausgegeben wird. Incl. dem ganzen Stacktrace.

Wir brauchen wirklich den ganzen Stacktrace ohne Interpretation, Auslassung von evtl. unwichtigem.

Dann ist die Frage: Wenn genau der Code in der Vergangenheit lief und jetzt nicht mehr läuft: Was hat sich geändert? Irgend etwas muss sich geändert haben: Was für Updates (Software, Code, Daten) gab es? Evtl. liegt es auch nur an den Daten - sind die Daten korrupt? Sprich: Wenn es mehrere Datensätze gibt: Ist dayName überall vorhanden und gesetzt? (Wir sehen auf dem Bildschirmfoto ja nur den ersten Datensatz - ggf. gibt es ja mehrere).

Ansonsten wäre die Frage: Kannst Du ein minimales Beispiel bauen, das das Problem aufzeigt? Also irgend welche Daten in irgend einem Report aufbereiten, das dann auf diesen Fehler läuft? Das ist ansonsten auch ein Weg, den Fehler zu finden: Einfach nach und nach alles nachstellen, bis eben der Fehler wieder kommt.
 
@KonradN Schönen Dank Konrad,

das Stichwort war stacktrace
Ich konnte die komplette Fehlermeldung damit bekommen.

Java:
final ByteArrayOutputStream stream = new ByteArrayOutputStream();
ex.printStackTrace(new PrintStream(stream));
System.out.println(stream);

Damit war klar das Problem lag im Modulsystem.
Also habe ich :

Code:
requires commons.beanutils;

und

für das package
opens org.joobsoft.vt.PVA00000.Controller.You to 
            javafx.base,
            javafx.controls,
            javafx.fxml,
            javafx.graphics,
            javafx.media,
            commons.beanutils;

das commons.beanutils hinzugefügt.

Jetzt läuft es.
Super recht herzlichen Dank für den Anstoß, nach einer Woche suchen habe ich mich im Kreis gedreht.
 

Zurück
Oben