Erro ireport

5 respostas
J

galera,

estou fazendo um relatorio no ireport para gerar pdf e está dando o erro abaixo:
22/09/2011 22:05:10 net.sf.jasperreports.engine.component.ComponentsEnvironment findComponentBundles
AVISO: Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components
net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file:
1. Cannot cast from Date to String
                value = (java.lang.String)(new java.util.Date()); //$JR_EXPR_ID=9$
                        <-------------------------------------->
2. Cannot cast from Date to String
                value = (java.lang.String)(new java.util.Date()); //$JR_EXPR_ID=10$
                        <-------------------------------------->
3. Cannot cast from int to String
                value = (java.lang.String)(+ ((java.lang.Integer)variable_PAGE_NUMBER.getValue())); //$JR_EXPR_ID=12$
                        <------------------------------------------------------------------------>
19. Cannot cast from Date to String
                value = (java.lang.String)(new java.util.Date()); //$JR_EXPR_ID=9$
                        <-------------------------------------->
20. Cannot cast from Date to String
                value = (java.lang.String)(new java.util.Date()); //$JR_EXPR_ID=10$
                        <-------------------------------------->
21. Cannot cast from int to String
                value = (java.lang.String)(+ ((java.lang.Integer)variable_PAGE_NUMBER.getEstimatedValue())); //$JR_EXPR_ID=12$
                        <--------------------------------------------------------------------------------->
22. Cannot cast from Long to String
                value = (java.lang.String)(((java.lang.Long)field_codigo.getValue())); //$JR_EXPR_ID=13$
                        <---------------------------------------------------------------------------------------->
24. Cannot cast from Boolean to String
                value = (java.lang.String)(((java.lang.Boolean)field_nacional.getValue())); //$JR_EXPR_ID=16$
                        <------------------------------------------------------------------------------------------------->
27. Cannot cast from Integer to String
                value = (java.lang.String)(((java.lang.Integer)field_status.getValue())); //$JR_EXPR_ID=19$
                        <------------------------------------------------------------------------------->
27 errors

	at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:191)
	at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:215)
	at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:148)
	at br.com.teste.Relatorio.gerarPDF(Relatorio.java:107)

preciso de ajuda :shock:

thanks

5 Respostas

J
esqueci de postar meu codigo no controller
public void gerarPDF(ServletContext scontext, List<T> lista)
	{
		HashMap<String, String> hm = new HashMap<String, String>();
		hm.put("NOME_CLIENTE", "CLIENTE TESTE");
		try
		{
			String caminho = scontext.getRealPath("./rel/relSintetico.jrxml");
			JRDataSource jrds = new JRBeanCollectionDataSource(lista);
			JasperReport jasperReport = JasperCompileManager.compileReport(caminho);
			JasperPrint print = JasperFillManager.fillReport(
					jasperReport,
					hm,
					jrds);
			
			JRDesignStyle unicodeChars = new JRDesignStyle();
            unicodeChars.setName("Unicode_Chars");
            unicodeChars.setFontName("Arial");
            unicodeChars.setFontSize(12);
            unicodeChars.setItalic(true);
            unicodeChars.setPdfFontName("Arial");
            unicodeChars.setPdfEncoding("UTF-8");
            print.addStyle(unicodeChars);

			JasperViewer.viewReport(print, true);

		}
		catch (JRException e)
		{
			e.printStackTrace();
			System.exit(1);
		}
		catch (Exception e)
		{
			e.printStackTrace();
			System.exit(1);
		}
	}
J

Falae javaCBA, tudo bom ?

É o seguinte cara, voce está enviando as variaveis da forma correta, mas no seu relatório você esqueceu de setar o tipo dos seus parametros, ao menos aparenta isso.

Assim como diz o erro

# Cannot cast from Date to String  
#                 value = (java.lang.String)(new java.util.Date()); //$JR_EXPR_ID=10$

você está enviando um Date em um String ...

para resolver isso, selecione o parametro correspondente, vá até propriedades e altere a field class para o que seja correspondente, nesse caso java.util.Date.

G

Erros com “cast”…
Será que você não mudou a Linguagem do relatório de “Groovy” pra “Java”?
Se não da uma olhada nos valores que você esta jogando nos campos string :slight_smile:

J

oi Gerva, era isso mesmo. EU tinha mudado a linguagem sim. Voltei e deu certo.

Agora to com outro erro, ele não acha meus beans. Sendo que no classpath estou apontando para o caminho certo (onde estao meu .class):

23/09/2011 09:02:36 net.sf.jasperreports.engine.component.ComponentsEnvironment findComponentBundles AVISO: Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : construct_codigo 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:821) at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:785) at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1482) at net.sf.jasperreports.engine.fill.JRHorizontalFiller.fillReport(JRHorizontalFiller.java:134)

G

Nunca tinha visto esse erro, mas a julgar pelo aviso de arquivo duplicado: “Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components”, acho que ele leu um arquivo corrompido ou nem leu…

A questão de Groovy e Java, você pode deixar Java mas terá que adicionar conversores de tipos

Criado 22 de setembro de 2011
Ultima resposta 23 de set. de 2011
Respostas 5
Participantes 3