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...