2016-05-04 4 views
-1

Ich versuche, meinen Bericht aufzurufen und es zu zeigen, aber es hat nicht funktioniert !!!Ich kann jaspert Bericht jrxml von Java-Anwendung nicht anrufen

Dies ist der Code:

/* * Diese Lizenz-Header zu ändern, Lizenz-Header in Projekteigenschaften wählen. * Um diese Vorlagendatei zu ändern, wählen Sie Extras | Templates * und öffnen Sie die Vorlage im Editor. */

package Frames; 

import java.beans.PropertyVetoException; 
import java.io.InputStream; 
import java.util.HashMap; 
import javax.swing.JOptionPane; 
import net.sf.jasperreports.engine.*; 
import net.sf.jasperreports.swing.*; 

/** 
* 
* @author Ma3d Sa3eed 
*/ 
public class ReportViewer extends javax.swing.JFrame { 

    java.awt.Container c; 

    public ReportViewer(String rptPath, HashMap parameter) { 
     try { 
      Class.forName("oracle.jdbc.OracleDriver"); 
      java.sql.Connection con = java.sql.DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ora10g", "employees", "manager"); 
      JasperPrint print = JasperFillManager.fillReport(rptPath, parameter, con); 
      JRViewer viewer = new JRViewer(print); 
      c = getContentPane(); 
      c.setLayout(new java.awt.BorderLayout()); 
      c.add(viewer); 
      show(); 
     } catch (Exception x) { 
      x.printStackTrace(); 
     } 
    } 
} 
+0

Was funktioniert nicht ?, Fehlermeldung? –

Antwort

0

Ich würde ein Jasper Objekt laden und den fill-Manager nur einen Weg, der nicht mit Ihrem rptPath wie so passieren (vorausgesetzt, es ist die volle Dateipfad des Jaspis-Bericht):

JasperReport report = (JasperReport) JRLoader.loadObject(rptPath); 
JasperPrint print = JasperFillManager.fillReport(report, parameter, con); 
.

Dann das passieren an den JFrame Sie in den Bericht anzeigen möchten

+0

Danke für deine Hilfe, Bruder. Ich habe immer noch eine Ausnahme, das ist mein Anruf Abschnitt: öffentliche statische void main (String ... args) { neue ReportViewer ("C: \\ Benutzer \\ Ma3d Sa3eed \\ Dokumente \\ NetBeansProjects \\ Mitarbeiter \\ src \\ Berichte \\ report1.jrxml ", null); } } DIES IST DER Stacktrace: Lauf: Exception in thread "main" java.lang.NoClassDefFoundError: org/Apache/commons/logging/LogFactory \t bei net.sf.jasperreports.engine.util.JRLoader . (JRLoader.java:68) –

+0

Der Fehler weist darauf hin, dass Ihnen eine vom JRLoader verwendete Bibliothek fehlt. Ich glaube, es ist das commons logging jar von Apache hier gefunden: http://commons.apache.org/proper/commons-logging/ –

0

die Sie interessieren, ist in einem Ordner xyz Ihre abc.jrxml vorausgesetzt:

InputStream stream = getClass().getClassLoader().getResourceAsStream("/xyz/abc.jrxml"); 
JasperReport report = JasperCompileManager.compileReport(stream); 
JaperPrint finalReport = JasperFillManager.fillReport(report, parameter, con); 
+0

ja, ich habe meine jrxml-Datei im Ordner callll Reports und ich habe es geändert in: InputStream Stream = getClass(). getClassLoader(). getResourceAsStream ("/ Reports/report1.jrxml"); aber ich bin immer noch eine Ausnahme, die genannt: Exception in thread "main" java.lang.NoClassDefFoundError: org/Apache/commons/logging/LogFactory In der Zeile: Jasper Bericht = JasperCompileManager.compileReport (Strom); Wie kann ich es beheben? –

+0

Haben Sie Apache Commons Glas in Ihrem Projekt? – PeaceIsPearl

Verwandte Themen