Erro na geração do relatório iReport

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);
        }
    }

Provavelmente não está encontrando o arquivo .jasper.
Verifique se após essa linha:

 InputStream pathSubReport = this.getClass().getClassLoader().getResourceAsStream("/report/relatorios.jasper");

A variável pathSubReport não está nula, se estiver, vc precisa rever como vc esta carregando esse arquivo.