Erro ao fazer chamada de subrelatorio - JasperReports

Olá pessoal estou tendo problema para passar o caminho do subrelatorio para o relatório principal. Já olhei em varios tutoriais e até aqui no forum, mas todas as soluções que tentei deu a mesma exception:

log4j:WARN No appenders could be found for logger (net.sf.jasperreports.engine.xml.JRXmlDigesterFactory).
log4j:WARN Please initialize the log4j system properly.
net.sf.jasperreports.engine.JRException: Resource not found at : debitos.jasper
	at net.sf.jasperreports.repo.RepositoryUtil.getResourceFromLocation(RepositoryUtil.java:255)
	at net.sf.jasperreports.repo.RepositoryUtil.getReport(RepositoryUtil.java:208)
	at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateReport(JRFillSubreport.java:328)
	at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:361)
	at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:286)
	at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:259)
	at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:459)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2044)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:778)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:288)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:151)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:909)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:841)
	at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:88)
	at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:653)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:969)
	at br.com.loov.mycash.relatorio.GeradorRelatorio.geraPdf(GeradorRelatorio.java:41)
	at br.com.loov.mycash.controller.RelatorioMensalController.doGet(RelatorioMensalController.java:49)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at br.com.loov.mycash.filtro.LoginFiltro.doFilter(LoginFiltro.java:47)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:651)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:412)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:754)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1385)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Unknown Source)

Segue abaixo o codigo onde eu passo o caminho do subrelatorio por parametro:
@WebServlet("/RelatorioMensalController")
public class RelatorioMensalController extends HttpServlet {
private static final long serialVersionUID = 1L;
private ContaDAO dao = new ContaDAO();

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		int idUsuario = Integer.parseInt(request.getParameter("idUsuario"));
		System.out.println(idUsuario);
		// acha jrxml dentro da aplicação
		ServletContext contexto = request.getServletContext();
		String jrxml = contexto.getRealPath("relatorio/relatorioMensal.jrxml");
		String jasper = contexto.getRealPath("relatorio//");

		// prepara parâmetros
		Map<String, Object> parametros = new HashMap<>();
		
		parametros.put("SUBREPORT_DIR",jasper);
		
		// gera relatório
		List<Conta> listaConta = dao.listar(idUsuario);
		GeradorRelatorio gerador = new GeradorRelatorio(new JRBeanCollectionDataSource(listaConta));
		gerador.geraPdf(jrxml, parametros, response.getOutputStream());

	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

Segue abaixo o código da classe geradora de relatorio:

public class GeradorRelatorio {

	private JRBeanCollectionDataSource jrBeanCollectionDataSource;

    public GeradorRelatorio() {
       
    }

	public GeradorRelatorio(JRBeanCollectionDataSource jrBeanCollectionDataSource) {
		this.jrBeanCollectionDataSource = jrBeanCollectionDataSource;
	}

	public void geraPdf(String jrxml, 
        Map<String, Object> parametros, OutputStream saida) {

        try {
            // compila jrxml em memoria
            JasperReport jasper = JasperCompileManager.compileReport(jrxml);

            // preenche relatorio
            JasperPrint print = JasperFillManager.fillReport(jasper, parametros, this.jrBeanCollectionDataSource);

            // exporta para pdf
            JRExporter exporter = new JRPdfExporter();
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
            exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, saida);

            exporter.exportReport();

        } catch (Exception e) {
        	e.printStackTrace();
        }
    }   
}

Segue o print do meu relatorio:

Segue print do project Explorer:

Segue git do repositorio do relatorio: https://github.com/JessPergentino/relatorio.git

Espero que vocês consigam me ajudar, obrigada desde já.

Se ambos os relatórios estão na mesma pasta vc n informa o nome dela novamente, somente “/”
Na verdade lá na propriedade do parametro já fica o valor padrão. Ai nem precisa especificar ao gerar:
image

Outra coisa: pq vc fez com que toda vez q o relatório for gerado ele antes precisa ser compilado mesmo nunca alterando o fonte dele? Pq simplesmente n usa direto o .jasper (compilado) q é mto mais eficiente?

Continuou dando o mesmo erro e agora? alguma outra solução?

Como que eu faria pra gerar o relatório já compilado? como o código ficaria?
Sei que são duvidas bem básicas, mas é a minha primeira vez mexendo com o jasper.

Pode fazer direto assim:
JasperPrint print = JasperFillManager.fillReport("relatorioCompilado.jasper", parametros, conexao);

Referência:

Eu segui esse tutorial, mas ele não ensina como chamar um subrelatorio.

Sub relatório já t mostrei acima como faz.
O tutorial é pra gerar um relatório a partir de um .jasper

Fiz como você mostrou só q não funcionou e continuo dando o mesmo erro. teria alguma outra forma de fazer? não sei onde estou errando.

Desconheço. Aquela forma funciona pra mim, então vc deve ter feito algo errado.
Posta seu código atualizado e seu relatorio.

Troquei o arquivo pro ja compilado e deu esse erro:

log4j:WARN No appenders could be found for logger (net.sf.jasperreports.extensions.ExtensionsEnvironment).
log4j:WARN Please initialize the log4j system properly.
net.sf.jasperreports.engine.JRException: Resource not found at : C:\Users\Seventech\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Mycash\relatorio\
	at net.sf.jasperreports.repo.RepositoryUtil.getResourceFromLocation(RepositoryUtil.java:255)
	at net.sf.jasperreports.repo.RepositoryUtil.getReport(RepositoryUtil.java:208)
	at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateReport(JRFillSubreport.java:328)
	at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:361)
	at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:286)
	at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:259)
	at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:459)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2044)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:778)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:288)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:151)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:909)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:841)
	at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:88)
	at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:653)
	at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:569)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:915)
	at br.com.loov.mycash.relatorio.GeradorRelatorio.geraPdf(GeradorRelatorio.java:33)
	at br.com.loov.mycash.controller.RelatorioMensalController.doGet(RelatorioMensalController.java:44)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at br.com.loov.mycash.filtro.LoginFiltro.doFilter(LoginFiltro.java:47)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:651)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:412)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:754)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1385)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Unknown Source)

Aqui o está o meu github onde estão o projeto e o projeto do relatório. Espero que você consiga me ajudar, não sei mais oq fazer, semana q vem irei apresentar o projeto.

Talvez o problema ocorra pq vc colocou os relatórios dentro da pasta dos arquivos web. Provavelmente nem seja o problema encontrar seu subrelatório mas sim seu arquivo principal.
O relatório é gerado pelo back, então crie no back um pacote com os .jasper
O link abaixo contem várias respostas úteis:

Tentei fazer da maneira como estava nas respostas e deu esse erro:

net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: C:\Users\Seventech\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Mycash\relatorio\relatorioMensal.jasper
	at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:109)
	at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:98)
	at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:565)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:915)
	at br.com.loov.mycash.relatorio.GeradorRelatorio.geraPdf(GeradorRelatorio.java:33)
	at br.com.loov.mycash.controller.RelatorioMensalController.doGet(RelatorioMensalController.java:44)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at br.com.loov.mycash.filtro.LoginFiltro.doFilter(LoginFiltro.java:47)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:651)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:412)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:754)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1385)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.io.FileNotFoundException: C:\Users\Seventech\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Mycash\relatorio\relatorioMensal.jasper
	... 33 more

Os arquivos no repositório estão atualizados

ta fazendo errado pq ta chamando lá em C:\Users… se tá no jar deve aparecer apenas o caminho de dentro do jar.

e como que seria então?

Estou pegando os arquivos assim:

InputStream jasper1 = getClass().getResourceAsStream("/relatorio/relatorioMensal.jasper");
InputStream jasper2 = getClass().getResourceAsStream("/relatorio/debitos.jasper");

Mas é que agora vc criou o pacote: Mycash/src/br/com/loov/mycash/relatorio/
mas está chamando como se fosse: Mycash/src/relatorio/
Vc comeu toda parte inicial do path do seu pacote, n vai achar mesmo

Me desculpe está incomodando tanto, mas continua dando o mesmo erro:

net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: C:\Users\Seventech\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Mycash\relatorio\relatorioMensal.jasper
	at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:109)
	at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:98)
	at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:565)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:915)
	at br.com.loov.mycash.relatorio.GeradorRelatorio.geraPdf(GeradorRelatorio.java:33)
	at br.com.loov.mycash.controller.RelatorioMensalController.doGet(RelatorioMensalController.java:44)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at br.com.loov.mycash.filtro.LoginFiltro.doFilter(LoginFiltro.java:47)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:651)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:412)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:754)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1385)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.io.FileNotFoundException: C:\Users\Seventech\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Mycash\relatorio\relatorioMensal.jasper
	... 33 more

Desta vez coloquei assim:

InputStream jasper1=getClass().getResourceAsStream("/br/com/loov/mycash/relatorio/relatorioMensal.jasper");
InputStream jasper2 = getClass().getResourceAsStream("/br/com/loov/mycash/relatorio/debitos.jasper");

Teu git está atualizado? pq lá n existe nada neste caminho.

Está sim