JasperReports: Kompillieren des JasperDesign

  • Themenstarter Themenstarter Silences
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
S

Silences

Gast
Hi,

ich habe mir im Forum die Beiträg zu Jasper Reports durchgesehen, hab aber nichts gefunden, was mir bei meinem Problem geholfen hätte.

Ich habe mit iReport ein Grunddesign für einen Report erstellt. Da die Daten, welche exportiert werden sollen, allerdings erst zur Laufzeit zusammengestellt werden, kann ich die einzelnen Felder des Detailbereichs nicht bereits in iReport erstellen.

Ich lade daher beim Erstellen des PDFs zuerst die .jrxml-Datei, und füge die Felder hinzu. Beim Kompilieren des Designs bekomme ich jedoch eine Exception.


Source:
Code:
JasperDesign jd = JRXmlLoader.load(getServletContext().getResourceAsStream("/test.jrxml"));
               
// Hinzufügen der Felder
                
JasperReport jr = JasperCompileManager.compileReport(jd); // hier wird die Exception geworfen

HashMap params = new HashMap();
params.put("user", getName());
JasperReportsHandler jsh = new JasperReportsHandler(getName(),this.getServletContext());
JasperPrint jasperPrint = jsh.generateJasperPrintByMapList("test", params, getDataRows(), jr);
jsh.exportJasperReport(jasperPrint,"inline","application/pdf",getTableName(),null,response);


Code:
Code:
"Errors were encountered when compiling report expressions class 
file:\nD:\\netbeans-5.5\\enterprise3\\apache-tomcat-5.5.17\\bin\\test_1177775726078_679378.java:4: package 
net.sf.jasperreports.engine does not exist\r\nimport 
net.sf.jasperreports.engine.*;\r\n^\r\nD:\\netbeans-5.5\\enterprise3\\apache-tomcat-5.5.17\\bin\\test_1177775726078_679378.java:5:
 package net.sf.jasperreports.engine.fill does not exist\r\nimport 
net.sf.jasperreports.engine.fill.*;\r\n^\r\nD:\\netbeans-5.5\\enterprise3\\apache-tomcat-5.5.17\\bin\\test_1177775726078_679378.java:13:
 package net.sf.jasperreports.engine does not exist\r\nimport 
net.sf.jasperreports.engine.*;\r\n^\r\nD:\\netbeans-5.5\\enterprise3\\apache-tomcat-5.5.17\\bin\\test_1177775726078_679378.java:15:
 package net.sf.jasperreports.engine.data does not exist\r\nimport 
net.sf.jasperreports.engine.data.*;\r\n^\r\nD:\\netbeans-5.5\\enterprise3\\apache-tomcat-5.5.17\\bin\\test_1177775726078_679378.java:21:
 cannot find symbol\r\nsymbol: class JREvaluator\r\npublic class test_1177775726078_679378 extends 
JREvaluator\r\n                                               
^\r\nD:\\netbeans-5.5\\enterprise3\\apache-tomcat-5.5.17\\bin\\test_1177775726078_679378.java:28: cannot find 
symbol\r\nsymbol  : class JRFillParameter\r\nlocation: class test_1177775726078_679378\r\n    private 
JRFillParameter parameter_REPORT_LOCALE = null;\r\n            
^\r\nD:\\netbeans-5.5\\enterprise3\\apache-tomcat-5.5.17\\bin\\test_1177775726078_679378.java:29: cannot find 
symbol\r\nsymbol  : class JRFillParameter\r\nlocation: class test_1177775726078_679378\r\n    private 
JRFillParameter parameter_REPORT_TIME_ZONE = null;\r\n            
^\r\nD:\\netbeans-5.5\\enterprise3\\apache-tomcat-5.5.17\\bin\\test_1177775726078_679378.java:30: cannot find 
symbol\r\nsymbol  : class JRFillParameter\r\nlocation: class test_1177775726078_679378\r\n    private 
JRFillParameter parameter_REPORT_VIRTUALIZER = null;\r\n            
^\r\nD:\\netbeans-5.5\\enterprise3\\apache-tomcat-5.5.17\\bin\\test_1177775726078_679378.java:31: cannot find 
symbol\r\nsymbol  : class JRFillParameter\r\nlocation: class test_1177775726078_679378\r\n    private 
JRFillParameter parameter_REPORT_SCRIPTLET = null;\r\n            
^\r\nD:\\netbeans-5.5\\enterprise3\\apache-tomcat-5.5.17\\bin\\test_1177775726078_679378.java:32: cannot find 
symbol\r\nsymbol  : class JRFillParameter\r\nlocation: class test_1177775726078_679378\r\n    private 
JRFillParameter parameter_REPORT_PARAMETERS_MAP = null;\r\n                   
...

Würde mich freuen, wenn mir jemand weiter helfen kann.


mit freundlichen Grüßen,
Silence
 
Sieht nach Classpath-Problem aus.
In früheren Versionen von JasperReports (habe es lange nicht mehr benutzt) gab es die Umgebungsvariable
"jasper.reports.compile.class.path", in der alle benötigten Jar-Dateien von JasperReport eingetragen werden.
Dies kannst du auch zur Laufzeit machen
Code:
System.setProperty(
   "jasper.reports.compile.class.path", 
   "./lib/jasperreport.jar;./lib/commons-beanutils.jar;...."
) usw.
Beachte aber, dass in POSIX Systemen Doppelpunkt als Path-Trenner verwendet wird, nicht Semikolon.
Suche am besten danach in der aktuellen Doku. Keine Ahnung, ob es in der aktuellen Version immer noch nötig ist.
 
Noch etwas. Es sind drei Umgebungsvariablen gewesen.

jasper.reports.compiler.class : Welcher Compiler wird verwendet (z.B. dori.jasper.engine.design.JRJdk13Compiler)
jasper.reports.compile.class.path : Classpath für die Compilierung
jasper.reports.compile.temp : Temporäres Verzeichnis für die compilierten Klassen
 
Danke 🙂

Wusste bereits, dass es was mit dem sein wird. Aber ich weiß noch nicht genau wie ich diese Variablen setzen muss und bin mit der Doku auch noch nicht wirklich weitergekommen.
Aber ich versuche es weiter. 😉
 
Meist liegt die Antwort viel näher als man denkt... 😳

Mir fehlt einfach eine Jar Datei zum Kompillieren, da ich nur meine normale JasperReports Library eingebunden hatte und die habe ich nur zum Verwenden mit fertig kompilierten Reports verwendet.
 
Hiho,

wäre nicht schlecht wenn du für andere diese JAR noch benennen könntest. 🙂

Vielleicht meinst du ja: jdt-compiler-3.1.1.jar

bye Saxony
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben