Olá estou trabalhando em um sistema java, que precisa gerar relatórios com o iReport, e ele está apresentando o seguinte erro:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2338)
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2351)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2822)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:804)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:301)
at net.sf.jasperreports.engine.util.ContextClassLoaderObjectInputStream.<init>(ContextClassLoaderObjectInputStream.java:58)
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:248)
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:233)
at model.dao.ProdutoDAO.gerarRelatorio(ProdutoDAO.java:225)
at view.TelaEstoque.jBttn_relatorioActionPerformed(TelaEstoque.java:425)
at view.TelaEstoque.access$1100(TelaEstoque.java:14)
at view.TelaEstoque$11.actionPerformed(TelaEstoque.java:275)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Acredito que o erro esteja no InputStream mas não sei o que fazer
Aqui segue o código do DAO:
public boolean gerarRelatorio() throws JRException {
Connection con = ConnectionFactory.getConnection();
PreparedStatement stmt = null;
ResultSet rs = null;
// String pathSubReport = "relatorios.jasper";
Map parametros;
try {
stmt = con.prepareStatement(
"SELECT"
+ " produto.nomeP AS produto_nomeP,"
+ " produto.qntd AS produto_qntd,"
+ " produto.preco AS produto_preco,"
+ " produto.qntdMin AS produto_qntdMin,"
+ " produto.prodQntSit AS produto_prodQntSit"
+ " FROM"
+ " produto"
);
rs = stmt.executeQuery();
JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
InputStream pathSubReport = this.getClass().getClassLoader().getResourceAsStream("/report/relatorios.jasper");
parametros = new HashMap();
parametros.put("SUBREPORT_DIR", pathSubReport);
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(pathSubReport);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parametros, jrRS);
JasperExportManager.exportReportToPdfFile(jasperPrint, "/report/relatorios/relEstoque.pdf");
JasperViewer viewer = new JasperViewer(jasperPrint, false);
viewer.setVisible(true);
return true;
} catch (SQLException ex) {
Logger.getLogger(ProdutoDAO.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(null, ex);
return false;
} finally {
ConnectionFactory.closeConnection(con, stmt);
}
}