Amigo… é o seguinte…
1 ) Coloque seu parâmetro SUBREPORT_DIR para ser do tipo java.lang.Object
2 ) Clique em cima do seu componente Subreport e nas propriedades dele(Subreport Properties), mude a Expression Class para java.net.URL
3 ) Na sua classe faça mais ou menos assim:
.
.
.
jasperReport = (JasperReport)JRLoader.loadObject(this.getClass().getResourceAsStream("/rgencomendas/relatorios/manifesto.jasper"));
parametros = new HashMap();
//aqui está meu subrelatório que está dentro do .jar
parametros.put("SUBREPORT_DIR", getClass().getResource("/rgencomendas/relatorios/manifesto_subreport0.jasper"));
jasperPrint = JasperFillManager.fillReport(jasperReport, parametros, HibernateUtil.getConnection());
Locale lingua = new Locale("pt", "br");
jasperViewer = new JasperViewer(jasperPrint, false, lingua );
jasperViewer.setDefaultCloseOperation(JasperViewer.DISPOSE_ON_CLOSE);
jasperViewer.setTitle("MANIFESTO");
jasperViewer.setVisible(true);
.
.
.
Comigo funcionou amigo… eu tentei o ResourceAsStream mais não carrega n… acho que deve ser algum bug mesmo do jasperReport.
Estou utilizando o ireport 3.7.5.
Espero ter ajudado…