Erro no ireport2 (Resolvido)

1 resposta
jonasjgs2

bom dia a todos...
seguinte: acho que meu topico anterior nao ficou claro
eu fiz um exemplo simples e que esta me dando o mesmo problema...

vou mostrar aqui o meu report, e as clases junto com o erro para ve se vcs conseguem me ajudar
este e o meu relatorio:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report name" pageWidth="595" pageHeight="842" columnWidth="535" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
	<property name="ireport.zoom" value="1.0"/>
	<property name="ireport.x" value="0"/>
	<property name="ireport.y" value="0"/>
	<field name="Det_cProd" class="java.lang.String"/>
	<background>
		<band splitType="Stretch"/>
	</background>
	<detail>
		<band height="40" splitType="Stretch">
			<textField>
				<reportElement x="211" y="16" width="100" height="20"/>
				<textElement/>
				<textFieldExpression><![CDATA[$F{Det_cProd}]]></textFieldExpression>
			</textField>
			<staticText>
				<reportElement x="75" y="16" width="100" height="20"/>
				<textElement/>
				<text><![CDATA[Código]]></text>
			</staticText>
		</band>
	</detail>
</jasperReport>

esta e minha classe detalhe:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package danfe001;

/**
 *
 * @author Admin
 */
public class Detalhe {
    private String Det_cProd;

    public String getDet_cProd() {
        return Det_cProd;
    }

    public void setDet_cProd(String Det_cProd) {
        this.Det_cProd = Det_cProd;
    }
}

esta e a aplicacao:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package danfe001;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;

/**
 *
 * @author Admin
 */
public class Rel001 {

    public static void main(String[] args) {
        Rel001 r = new Rel001();
        r.Relatorio();

    }

    public void Relatorio() {
        Map map = new HashMap();
        List<Detalhe> list = new ArrayList<Detalhe>();

        Detalhe detalhe;

        for (int i = 0; i < 100; i++) {
            detalhe = new Detalhe();
            detalhe.setDet_cProd("" + i + 1000);
            list.add(detalhe);
        }


        JRBeanCollectionDataSource source =
                new JRBeanCollectionDataSource(list);

        try {

            JasperPrint p = JasperFillManager                                               // LINHA COM O ERRO
                    .fillReport("src/Danfe001/Rel001.jasper", map, source);

            JasperViewer.viewReport(p, false);
        } catch (Exception e) {
            e.printStackTrace();
        }






Desde ja agradeco...

    }
}

este e o erro que esta dando:

run:
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: Error retrieving field value from bean : Det_cProd
at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:123)
at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getFieldValue(JRAbstractBeanDataSource.java:96)
at net.sf.jasperreports.engine.data.JRBeanCollectionDataSource.getFieldValue(JRBeanCollectionDataSource.java:100)
at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDataset.java:922)
at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:887)
at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:864)
at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1435)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:126)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:836)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:765)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:84)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:540)
at danfe001.Rel001.Relatorio(Rel001.java:46)
at danfe001.Rel001.main(Rel001.java:24)
Caused by: java.lang.NoSuchMethodException: Unknown property 'Det_cProd' on class 'class danfe001.Detalhe'
at org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1313)
at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:762)
at org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:837)
at org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:426)
at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:111)
... 14 more
CONSTRUÍDO COM SUCESSO (tempo total: 2 segundos)

amigos, descobri o problema porem gostaria que alguem podesse me explicar...

O ireport dava este erro porque no detail o nome do campo estava "Det_cProd", eu apenas mudei para "det_cProd'
mas eu nao entendi a causa porque na classe "Detalhe" o nome do campo continua como "Det_cProd"..

o que eu nao entendi e: se na classe o nome do campo continua "Det_cProd" porque no relatorio eu tive que colocar "det_cProd"
se alguem poder me explicar isso... mesmo que eu tenha resolvido o problema eu gostaria de saber...

e um outro detalhe importante... eu tenho tambem no meu projeto original os parametros iniciando com letras maiusculas e nao tem problema
so no detail do relatorio acontece isso...
curioso nao e

se alguem poder me explicar eu agradeco...

1 Resposta

C

Não sei o por que disso… mas no report experimenta criar o field começando com minusculo.
det_cProd ao inves de Det_cProd

<textFieldExpression><![CDATA[$F{Det_cProd}]]></textFieldExpression>
Criado 30 de novembro de 2012
Ultima resposta 30 de nov. de 2012
Respostas 1
Participantes 2