thiagocg:
Bom, vamos voltar mais um pouquinho:
1º. vc ja utilizou o jasper / ireport antes, tem um bom conhecimento de como criar relatorios com ele?
2º. vc ja verificou se seu objeto que esta sendo passado para o relatorio atraves do seu JRBeanCollectionDataSource tem as propriedades iguais as declaradas no seu relatorio (nome atributo = nome do field no caso)
Sei que podem parecer bobas estas perguntas, mas fica dificil achar um erro sem conhecer realmente seu problema, pois no erro q vc passou ele da a impressão que ele não esta encontrando uma correspondencia entre a field e seu objeto.
Então Tiago
1º Já utilizei o Jasper / Ireport antes, mas era tudo versão antiga. Agora estou usando tudo novo.
2º Já verifiquei isso sim.
Coloquei no ireport “$F{nome}”, “$F{dependentes}”.
Na minha classe Java eu tenho: “protected String nome;” e “protected List dependentes;”
Vou postar meu codigo aki
public class Main {
private static final String CAMINHO_PDF = "C:\\AMBIENTE SISOUVIDOR\\RELATORIO\\relatorio.pdf";
// private static final String CAMINHO_JASPER = "C:\\AMBIENTE SISOUVIDOR\\RELATORIO\\report1.jasper";
private static final String CAMINHO_JRXML = "C:\\AMBIENTE SISOUVIDOR\\RELATORIO\\report1.jrxml";
public static void main(String[] args) throws Exception {
ClienteDao clienteDao = new ClienteDao();
List<Cliente> clientes = montarDados(clienteDao);
limparPasta();
JasperPrint montarRelatorio = montarRelatorio(clientes);
gerarRelatorio(montarRelatorio);
System.out.println(" fim ");
}
private static void limparPasta() {
File file = new File(CAMINHO_PDF);
if(file.exists())
file.delete();
}
private static void gerarRelatorio(JasperPrint reportToPrint) throws JRException, IOException {
File f = new File(CAMINHO_PDF);
byte[] bytes = JasperExportManager.exportReportToPdf(reportToPrint);
FileOutputStream out = new FileOutputStream(f);
out.write(bytes);
}
@SuppressWarnings("unchecked")
private static JasperPrint montarRelatorio(List<Cliente> clientes) throws JRException, FileNotFoundException {
JRBeanCollectionDataSource beanDataSource = new JRBeanCollectionDataSource(clientes);
Map parametros = new HashMap();
JasperDesign design = JRXmlLoader.load(CAMINHO_JRXML);
JasperReport report = JasperCompileManager.compileReport(design);
return JasperFillManager.fillReport(report,parametros, beanDataSource);
}
@SuppressWarnings("unchecked")
private static List<Cliente> montarDados(GenericDao<?> dao)
throws Exception {
List<Cliente> lista = (List<Cliente>) dao.list();
for (Cliente clienteAux : lista) {
clienteAux.getDependentes();
}
return lista;
}
}
o erro é:
Exception in thread "main" net.sf.jasperreports.engine.design.JRValidationException: Report design not valid :
1. Field not found : nome
2. Field not found : dependentes
3. Field not found : dependentes
at net.sf.jasperreports.engine.design.JRAbstractCompiler.verifyDesign(JRAbstractCompiler.java:258)
at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:140)
at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:215)
at br.com.netx.prototipo.relatorio.Main.montarRelatorio(Main.java:57)
at br.com.netx.prototipo.relatorio.Main.main(Main.java:34)
E muito obrigado pela atenção.