Relatório não é encontrado ao executar .jar

Pessoal, no netbeans ele encontra o relatório normal, mas quando vou pelo jar, ele não está encontrando. Já vi alguns tópicos por aqui sobre esse problema, mas mesmo assim não consegui resolver, pois eles falam que é apenas tirar o “src” do caminho da pasta onde está alocado o relatório. segue meu código!

Connection conn = new SQLConnection().java_db();
if(!jComboBox1.getSelectedItem().equals("Selecione...")&&procurar1.getDate()!= null && procurar2.getDate()!=null){
Map p = new HashMap();
p.put("tipoteste", jComboBox1.getSelectedItem());
p.put("dataini", procurar1.getDate());
p.put("datafim", procurar2.getDate());
JasperReport relatorio;
JasperPrint impressao;

try {
    relatorio = JasperCompileManager.compileReport(new File("").getAbsolutePath()
            + "/Relatorios/reprovadosgeral.jrxml");

    impressao = JasperFillManager.fillReport(relatorio, p, conn);
    JasperViewer view = new JasperViewer(impressao, false);
    view.setTitle("Relatório Reprovados");
    view.setVisible(true);
    

} catch (Exception e) {

}
}else
{
    JOptionPane.showMessageDialog(null, "Preencha todos os campos");
}

}

Olá, e seu relatório está em que pasta em relação a seu projeto?

pela IDE eu consigo encontrar ele aqui Rodrigo /src/Relatorios/reprovadosgeral.jrxml, mas ao extrair o .jar, não tem a pasta src

De fato não tem, o conteúdo de src vai pro jar.
Em uma breve pesquisada encontrei isso:

JasperPrint jp = JasperFillManager.fillReport(
ClassLoader.getSystemResourceAsStream(“com/foo/blah/reports/myreport.jasper”)

Dica: se vc precisa fazer modificações no fonte do seu relatório antes de gerar ele, ai blz, do contrário, use o compilado (.jasper) sempre, evita retrabalho desnecessário.

que tipo de modificações Rodrigo? poderia ser mais especifico por favor?

não consegui resolver :s

QUALQUER. se vc só pega o jrxml, compila e gera o relatório, está sendo ineficiente.

não conseguiu e por que? oq vc fez? poste o código atualizado, como q eu vou saber oq vc tentou fazer

Não estou sabendo montar com o código q vc me mandou… está ficando em vermelho

    Connection conn = new SQLConnection().java_db();
        if (!jComboBox1.getSelectedItem().equals("Selecione...") && procurar1.getDate() != null && procurar2.getDate() != null) {
            Map p = new HashMap();
            p.put("tipoteste", jComboBox1.getSelectedItem());
            p.put("dataini", procurar1.getDate());
            p.put("datafim", procurar2.getDate());
            JasperReport relatorio;
            JasperPrint impressao;

            try {

                JasperPrint jp = JasperFillManager.fillReport(
                        ClassLoader.getSystemResourceAsStream("com/foo/blah/Relatorios/reprovadosgeral.jasper"));
    //            relatorio = JasperCompileManager.compileReport(new File("").getAbsolutePath()
    //                    + "Relatorios/reprovadosgeral.jrxml");

                impressao = JasperFillManager.fillReport(relatorio, p, conn);
                JasperViewer view = new JasperViewer(impressao, false);
                view.setTitle("Relatório Reprovados");
                view.setVisible(true);

            } catch (Exception e) {

            }
        } else {
            JOptionPane.showMessageDialog(null, "Preencha todos os campos");
        }

pô véi, vc nem alterou o nome dos pacotes, vc tem este pacote ‘com/foo/blah’ ?
Se ajuda!

pô véi, to falando q o erro ta na hora de montar q não to sabendo? me ajuda!

Tentei fazer assim

if(!jComboBox1.getSelectedItem().equals("Selecione...")&&procurar1.getDate()!= null && procurar2.getDate()!=null){
Map p = new HashMap();
p.put("tipoteste", jComboBox1.getSelectedItem());
p.put("dataini", procurar1.getDate());
p.put("datafim", procurar2.getDate());

try {
    InputStream caminho = getClass().getResourceAsStream("/Relatorios/reprovadosgeral.jasper");

JasperPrint print = JasperFillManager.fillReport(caminho, p, conn);
    JasperViewer view = new JasperViewer(print, false);
    view.setTitle("Relatório Reprovados");
    view.setVisible(true);
    

} catch (Exception e) {

}
}else
{
    JOptionPane.showMessageDialog(null, "Preencha todos os campos");
}

mas da o seguinte erro

abr 18, 2018 9:22:16 AM net.sf.jasperreports.engine.query.JRJdbcQueryExecuter <init>
ADVERTÊNCIA: The supplied java.sql.Connection object is null.

Estou ajudando, mas que fique claro que não estou aqui pra fazer pra vc.
seu erro inicial era q n conseguia carregar seu relatório. Agora seu problema é outro:

Neste caso, novamente, ao invés de ajudar a resolver, vou sugerir que mude sua lógica.
Como seu relatório pega os dados? ele mesmo faz uma consulta no banco? se sim, errado!
Por boas práticas o relatório não deve se conectar ao banco e fazer consultas, ele deve receber os dados da sua aplicação.

Exemplo passando uma coleção de dados:
https://www.tutorialspoint.com/jasper_reports/jasper_filling_reports.htm

então um exemplo seria assim:

public boolean gerarRelatorioFornecedores() {
    try {
          this.conectar();
          this.executarSQL("SELECT * FROM fornecedores;");
          JRResultSetDataSource jrRS = new JRResultSetDataSource(getResultSet());
        // caminho do arquivo dentro dos pacotes  
        InputStream caminhoRelatorio = this.getClass().getClassLoader().getResourceAsStream("ArquivosJasper/relatorioFornecedores.jasper");
        JasperPrint jasperPrint = JasperFillManager.fillReport(caminhoRelatorio, new HashMap(), jrRS);

        String nomeArquivo = "C:/rel.pdf";
        JasperExportManager.exportReportToPdfFile(jasperPrint, nomeArquivo);
        File file = new File(nomeArquivo);
        try {
            Desktop.getDesktop().open(file);
        } catch (Exception e) {
            JOptionPane.showConfirmDialog(null, e);
        }
        file.deleteOnExit();

    } catch (Exception e) {
        e.printStackTrace();
        JOptionPane.showMessageDialog(null, e.getMessage(), "Erro:", JOptionPane.ERROR_MESSAGE);
        return false;
    }
        return true;
}