Iniciante Java + Jasperreport + Ireport

Pessoal, boa tarde, preciso muito da ajuda de voces.

estou iniciando a carreira de programação e escolhi logo java para comecar, tenho algumas duvidas, mas agora seria sobre o jasperreport + irreport

tenho a seguinte classe:

public class teste {
public void montaRelatorio(Mensalidade mensalidade){   
    try{   
        HashMap<String, String> atributosRecibo = new HashMap<String, String>();   
           
        atributosRecibo.put("mesReferencia", mensalidade.getMesreferencia());
        
        ArrayList<HashMap<String, String>> recibos = new ArrayList<HashMap<String, String>>();    
        recibos.add(atributosRecibo);
           
        
        
        JRMapCollectionDataSource collection = new JRMapCollectionDataSource(recibos);   
          
   JasperPrint relatorio = JasperFillManager.fillReport("/home/leandro/recibo.jasper", new HashMap(), collection);   
        JasperExportManager.exportReportToPdfFile(relatorio, "/home/leandro/ReciboTeste.pdf");     
           
        java.awt.Desktop desktop = java.awt.Desktop.getDesktop();     
   desktop.open(new File("/home/leandro/ReciboTeste.pdf"));    
        
        
}catch (Exception e) {   
        e.printStackTrace();   
}   
} 
}

achei na internet, modifiquei, mas nao funciona, eu consigo fazer um relatorio utilizando query sql diretamente no ireport, porem oq eu preciso para esse recibo seria, o cliente vai pagar a matricula em um jsp, ira fornecer o mes por exemplo que esta pagando, ai eu pegaria esse mes da seguinte forma:

atributosRecibo.put(“mesReferencia”, mensalidade.getMesreferencia());

porem minha dúvida é, como eu faria o arquivo recibo.jasper

eu teria que criar algum datasource no ireport? buscando dados de um sgbd eu consigo, porem de uma classe java nao sei oq fazer.
como eu colocaria o parametro mesReferencia no relatorio? diz field not set ou algo parecido
mudei para P{mesReferencia} e diz parameter not set ou algo parecido tb.

alguem poderia me ajudar? procurei tutoriais, procurei no forum, e oq acho é somente sobre as classes java, como passar collection etc, mas nao achei nada explicando como criar o arquivo .jasper.

agradeço desde já.

pessoal, eu consegui criar o .jasper agora compilou
eu coloquei no ireport $P{mesReferencia}

ai eu tive que criar esse parametro na guia parameters, porem agora quando eu vou no jsp e digito o mes, e clico em ok da o seguinte erro:

java.lang.NullPointerException
	at br.com.sistema.Classes.teste.montaRelatorio(teste.java:17)
	at br.com.sistema.action.testeAction.execute(testeAction.java:20)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:616)
	at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
	at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
	at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)

no jsp eu coloquei assim:

<form id="cadastro" name="cadastro" method="post" action="teste" onSubmit="return validar();">

    Mes de Referencia:
    <label id="mensalidade.mesreferencia">
      <select name="mensalidade.mesreferencia" size="1" id="mensalidade.mesreferencia">
        <option>SELECIONE</option>
        <option>JANEIRO</option>
        <option>FEVEREIRO</option>
        <option>MARÇO</option>
        <option>ABRIL</option>
        <option>MAIO</option>
        <option>JUNHO</option>
        <option>JULHO</option>
        <option>AGOSTO</option>
        <option>SETEMBRO</option>
        <option>OUTUBRO</option>
        <option>NOVEMBRO</option>
        <option>DEZEMBRO</option>
      </select>
    </label>
  
      
      <input type="submit" name="button" id="button" value="ok" />
    </label>
    
</form>

poderiam me ajudar com essa?

Cara eu uso essa logica para chamar o relatório na aplicação, veja se lhe serve…

# try {  
#             Connection con = bd.conectar();  
#             HashMap parametros = new HashMap();  
#             JasperPrint jp = JasperFillManager.fillReport("./Jasper/ChamadosPendentes2.jasper",parametros, con);  
#             JasperViewer jrv = new JasperViewer(jp, false);  
#             jrv.setVisible(true);  
#               
#   
#         }  
#         catch(Exception e){  
#             e.printStackTrace();  
#         }  
#         // TODO add your handling code here:  
#     } 
1 curtida

essa lógica nao seria para buscar os dados de um banco?
na minha eu queria buscar de um jsp, por isso o mensalidade.getMesreferencia()

abracao

sei que hoje é sábado… praia… tá um sol danado :stuck_out_tongue:
mas alguem poderia me ajudar??

Falae mouzer.

Cara, se vc precisa passar alguma informação para o relatório, como por exemplo o “mês referência”, vc faz certo ao utilizar o mesmo como parâmetro.

Para obter os dados ao gerar um relatório, ou você conecta no banco e roda a query, obtém via Hibernate ou até mesmo obtém via collections.

Sugiro que você faça os testes no iReport, e siga a opção de gerar o relatório utilizando collections.

As versões mais novas do iReport estão quebradas, então pegue a versão 3.5.2 que é certeza que funciona a opção de “criar um datasource utilizando JavaBeans”.

Desenhe o seu template nele, e crie os parâmetros que vc precisa. Quando vc visualizar o mesmo, será pedido o valor do parâmetro.

Não se esqueça que pelo iReport você pode obter os dados para gerar o relatório, mas para a opção de collections vc vai precisar criar uma factory que seja estática e os beans devem estar no classpath do iReport.

Leia este artigo, ele é de grande ajuda:

http://knol.google.com/k/jasper-reports-working-with-beans-and-sub-report#

Boa sorte. :slight_smile:

opa… valeu ai pela dica, irei tentar.
muito obrigado!!

conseguiu resolver o problema?

Já sim, obrigado