2016-08-29 6 views
2

Also habe ich dieses Programm in Java mit Eclipse (jdk 1.8.0_74) unter Windows 7 entwickelt, das der Benutzer irgendwann einen Bericht mit Daten aus der Datenbank erzeugen kann.Fehler beim Kompilieren des Berichts nach dem Packen in JAR

Um diesen Bericht zu erstellen, habe ich TIBCO Jaspersoft Studio-6.3.0 verwendet, das diese .jrxml- und .jasper-Dateien generiert. Damit mein Programm diese Dateien erkennt, habe ich sie in ein Berichtspaket kopiert.

Wenn ich auf Eclipse läuft, funktioniert alles absolut gut; Der Bericht wird erstellt, kann alles drucken.

Jetzt das Problem: Wenn ich in Runnable JAR exportieren (Export> Runnable JAR-Datei> Extrahieren erforderlichen Bibliotheken in generierte JAR) es überhaupt nicht generiert; zeigt mir einen Kompilierfehler.

Es geht den folgenden Code:

public final void gerarRelatorio() { 
    if (dateChooser.getDate() == null) { 
     JOptionPane.showMessageDialog(null, "Preencha o campo de data!"); 
    } else { 
     try { 
      JOptionPane.showMessageDialog(null, "Seu relatório será gerado..."); 

      JasperReport report = JasperCompileManager 
        .compileReport(getClass().getResourceAsStream("RelatorioAttr.jrxml")); 

      if (new DAORelatorioImpl().preencherRelatorioATratar(dateChooser.getCalendar()) 
        .isEmpty()) { 
       JOptionPane.showMessageDialog(null, 
         "Nenhum dado foi encontrado para essa data!"); 
      } else { 
       JasperPrint print = JasperFillManager.fillReport(report, null, 
         new JRBeanCollectionDataSource(new DAORelatorioImpl() 
           .preencherRelatorioATratar(dateChooser.getCalendar()))); 

       JOptionPane.showMessageDialog(null, "Relatório Gerado com Sucesso!"); 

       JasperViewer jv = new JasperViewer(print, false); 
       jv.setVisible(true); 
       jv.toFront(); 
      } 

     } catch (HeadlessException | JRException e) { 
      JOptionPane.showMessageDialog(rootPane, "Erro 1: " + e); 
      e.printStackTrace(); 
     } catch (ConexaoException | DAOException ex) { 
      JOptionPane.showMessageDialog(rootPane, "Erro 2: " + ex); 
     } 
    } 
} 

Auch wenn auf Eclipse läuft es funktioniert ganz gut, aber diese Ausnahme geschieht, wenn ich versuche, auf kompilierte JAR zu verwenden:

net.sf.jasperreports.engine.JRException: Error compiling report java source files: C:\Users\guilherme.brandao\workspace\RelatorioAttr_1472481426930_73428.java 

Ich habe keine Hinweis, wie man das meistens löst, weil ich nicht einmal weiß, was diese Datei ist oder wo sie erstellt wird.

Ich wäre dankbar für jede Hilfe, die Sie zur Verfügung stellen können.

+1

Beachten Sie, dass, wenn Sie Java-Code, der die modifiziert Bericht zur Laufzeit, das Kompilieren der '.jrxml' Datei in eine' .jasper' Datei ist nicht notwendig. Sie können die von iReport oder JasperSoft Reports erstellte Datei ".jasper" direkt laden und füllen. Dies reduziert die Zeit, die zum Generieren eines Berichts benötigt wird, und vereinfacht den Code. –

Antwort

2

indem Löste das .jasper zu laden, die bereits anstelle der .jrxml durch den folgenden Code kompiliert wird:

JasperReport report = JasperCompileManager 
      .compileReport(getClass().getResourceAsStream("RelatorioAttr.jrxml")); 

zu

InputStream jasperStream = getClass().getResourceAsStream("RelatorioAttr.jasper"); 
JasperReport report = (JasperReport) JRLoader.loadObject(jasperStream); 
Verwandte Themen