Erro java.lang.NullPointerException

Estou com dificuldades em identificar onde esta o erro. Sou iniciante em java e gostaria da ajuda de vocês.

Erro abaixo:

java.lang.NullPointerException
	at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2781)
	at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2797)
	at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:3274)
	at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:934)
	at java.io.ObjectInputStream.<init>(ObjectInputStream.java:396)
	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 net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:647)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:971)
	at Dao.DAORelatorios.gerarRelatorioCarteiraMembro(DAORelatorios.java:158)
	at Controller.ControllerCredencial.gerarRelatorioCarteiraMembroIndividual(ControllerCredencial.java:91)
	at Visao.ViewCredencialMembros$9.run(ViewCredencialMembros.java:513)
CONSTRUÍDO COM SUCESSO (tempo total: 21 segundos)

Aqui é o metodo que gera o relatório:

public boolean gerarRelatorioCarteiraMembro(int pCodigoMembro) {
  try {
    this.conectar();
    
    this.executarSQL("SELECT "
      + "empresa.codigo, "
      + "empresa.nome_fantasia, "
      + "empresa.endereco,"
      + "empresa.bairro, "
      + "empresa.cidade, "
      + "empresa.estado, "
      + "credencial.id, "
      + "credencial.nome, "
      + "credencial.funcao, "
      + "credencial.matricula, "
      + "credencial.nascionalidade,"
      + "credencial.naturalidade, "
      + "credencial.data_nascimento, "
      + "credencial.rg, "
      + "credencial.cpf, "
      + "credencial.estado_civil,"
      + "credencial.nome_pai, "
      + "credencial.nome_mae, "
      + "credencial.membro_desde, c"
      + "redencial.data_validade, "
      + "credencial.foto,"
      + "credencial.sexo, "
      + "credencial.endereco, "
      + "credencial.numero, "
      + "credencial.bairro, "
      + "credencial.cidade,"
      + "credencial.uf,"
      + "credencial.cep, "
      + "credencial.telefone, "
      + "credencial.celular, "
      + "credencial.email, "
      + "credencial.nivelescolar, "
      + "credencial.databatismo,"
      + "credencial.igrejadebatismo, "
      + "credencial.nomedopastor, "
      + "credencial.databatismoespiritosanto,"
      + "credencial.ano, "
      + "credencial.aceitopor,"
      + "credencial.id_empresa  "
      + "FROM tbl_credencial credencial "
      + "INNER JOIN empresa empresa ON empresa.codigo = credencial.id_empresa WHERE credencial.id = '" + pCodigoMembro + "'");
    
    JRResultSetDataSource jrRS = new JRResultSetDataSource(getResultSet());
    
    // caminho do arquivo dentro dos pacotes  
    InputStream caminhoRelatorio = this.getClass().getClassLoader().getResourceAsStream("C:/SGIgrejas/src/Relatorios/relCredencialIndividual.jasper");
    JasperPrint jasperPrint = JasperFillManager.fillReport(caminhoRelatorio, new HashMap(), jrRS);
    
    String nomeArquivo = "/rel.pdf";
    JasperExportManager.exportReportToPdfFile(jasperPrint, nomeArquivo);
    File file = new File(nomeArquivo);
    
    try {
      Desktop.getDesktop().open(file);
    } catch (Exception e) {
      JOptionPane.showConfirmDialog(null, e.getMessage());
    }
    
    file.deleteOnExit();
  } catch (Exception e) {
    e.printStackTrace();
    JOptionPane.showMessageDialog(null, "Erro: " + e.getMessage(), "Erro:", JOptionPane.ERROR_MESSAGE);
    return false;
  }
  
  return true;
}

Aqui é button a onde chamo o relatório:

private void btnImprimirCredencialActionPerformed(java.awt.event.ActionEvent evt) {                                                      
  //chamaRelatorioMembro();
  
  try {
    int linhaSelecionada = tabelaCredencialMembro.getSelectedRow();
    
    // Verificamos se existe realmente alguma linha selecionada
    if (linhaSelecionada < 0) {
      JOptionPane.showMessageDialog(this, "Você deve selecionar um item na tabela antes de clicar no botão!", "ATENÇÃO", JOptionPane.WARNING_MESSAGE);
    } else {
      final AguardeGerandoRelatorio carregando = new AguardeGerandoRelatorio();
      final ControllerCredencial controllerCredencial = new ControllerCredencial();
      carregando.setVisible(true);
      
      Thread t = new Thread() {
        @Override
        public void run() {
          // imprimir clientes
          controllerCredencial.gerarRelatorioCarteiraMembroIndividual((int) tabelaCredencialMembro.getValueAt(tabelaCredencialMembro.getSelectedRow(), 0));
          carregando.dispose();
        }
      };
      
      t.start();
    }
  } catch (Exception e) {
    JOptionPane.showMessageDialog(rootPane, "Erro ao executar a impressão! " + e.getMessage());
  }
}

Aguem me ajuda por favor.

esta é a linha 158 acima.

Evite usar caminhos absolutos para recuperar arquivos, pois, ao executar o código em outra maquina, com certeza não irá funcionar.

Como o arquivo jasper está no classpath (mesmo lugar onde estão os pacotes e as classes), vc deve conseguir pegar usando o caminho relativo:

InputStream relatorio = this.getClass()
  .getResourceAsStream("/Relatorios/relCredencialIndividual.jasper");

Faça essa mudança e, ao executar, verifique se a variável relatorio vem preenchida ou null.

obrigado