Veröffentlicht 5. Mai 200916 j Hallo zusammen, ich versuche die Funktionalität von Java-Bibliothek JasperReport in PHP-Umgebung mit PHP Java Bridge zu testen. Allein mit Java habe ich den gleichen Script schon getestet und es funktioniert einwandfrei. Wenn ich aber meinen PHP-Script aufrufe, bekomme ich foldenden Java-Fehler: -------------------------------------------------------------------------- Fatal error: Uncaught [[o:Exception]:"java.lang.Exception: Invoke failed: [[c:JasperCompileManager]]->compileReport((o:String)[o:String]). Cause: net.sf.jasperreports.engine.JRException: org.xml.sax.SAXParseException: Premature end of file. Responsible VM: 1.6.0_13@http://java.sun.com/" at: #-15 net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:243) #-14 net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:226) #-13 net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:214) #0 http://localhost:8080/JavaBridge/java/Java.inc(255): java_ThrowExceptionProxyFactory->getProxy(3, 'net.sf.jasperre...', true) #1 http://localhost:8080/JavaBridge/java/Java.inc(471): java_Arg->getResult(true) #2 http://localhost:8080/JavaBridge/java/Java.inc(477): java_Client->getWrappedResult(true) #3 http://localhost:8080/JavaBridge/java/Java.inc(672): java_Client->getResult() #4 http://localhost:8080/JavaBridge/java/Java.inc(1783): java_Client->invokeMethod(2, 'compileReport', Array) #5 http://localho in http://localhost:8080/JavaBridge/java/Java.inc on line 218 -------------------------------------------------------------------------- Und das ist der Quellcode: <?php // PDF-Erzeugung $settingsPath = "includes/settings/"; $JavaBridge = file_get_contents($settingsPath . 'javaBridgePath.inc'); $jasperReportsLib = file_get_contents($settingsPath . 'jasperReportsLibPath.inc'); require_once($JavaBridge); $xml_datei = "personen_db.xml"; $xpath = "/personen/person"; $jrxml_datei = "personen_db.jrxml"; $pdf_datei = "personen_db.pdf"; $handle = @opendir($jasperReportsLib); while(($new_item = readdir($handle)) !== false) { $java_library_path .= 'file:'.$jasperReportsLib.'/'.$new_item .';'; } java_require($java_library_path); // einlesen des XML-Files, erzeugt JR-Datenquelle: $ds = new Java("net.sf.jasperreports.engine.data.JRXmlDataSource",$xml_datei,$xpath); //Bis dahin komme ich durch! // einen zunächst leeren Report aus dem XML erzeugen: $sJcm = new JavaClass("net.sf.jasperreports.engine.JasperCompileManager"); //Bis dahin komme ich durch! $report = $sJcm->compileReport($jrxml_datei); //Hier steige ich schon aus! // den neuen Report mit Daten füllen $sJfm = new JavaClass("net.sf.jasperreports.engine.JasperFillManager"); $print = $sJfm->fillReport($report, new Java("java.util.HashMap"), $ds); // Umwandlung in PDF: $sJem = new JavaClass("net.sf.jasperreports.engine.JasperExportManager"); //$sJem->exportReportToPdfFile($print, $pdf_datei); echo "PDF wurde erstellt!"; ?> Ich bin hier im Forum, weil das eigentlich ein Java-Fehler ist und mit PHP nicht zu tun hat. Kann mir jemand helfen?
5. Mai 200916 j Ohne mich durch den gesamten Wüst zu wühlen: Premature end of file deutet darauf hin, dass die Quell XML-Datei fehlerhaft ist.
5. Mai 200916 j Hallo! Danke tausend mal!!! Es lag wirklich an der xml-Datei. Ich habe eine andere ausgetestet, bei der ich 100% sicher war und es hat funktioniert!!! Warum Kaum zu glauben!!! Danke sehr!!!
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.