* Visite o ALJUG - http://aljug.blogspot.com - Noticias sobre a comunidade java alagoana e do mundo * Visite o blog Mundo Gamificado www.mundogamificado.com.br - E vamos mudar o mundo! *

domingo, 6 de janeiro de 2013

java.lang.NoSuchMethodException do Ireport

 Olá pessoall,

Estou eu de volta escrevendo um post, pois bem hoje eu vou falar de um erro que eu estava que toda vez que ia gerar um relatório o erro apresentava, tinha feito tudo mais sem sucesso. O erro é esse abaixo:

Caused by: java.lang.NoSuchMethodException: Unknown property '' on class

Como vocês podem ver a rotina estava procurando a propriedade vazio, só que não existia essa propriedade de fato, porém como corrigir este caso?

Nada como velho e bom google, mas não encontrei nada em português que pudesse me ajudar então encontrei em um site chamado zkoss.org e vou mostrar como corrige isto.

O erro no log pode ser encotnrado desta maneira:

net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : 
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

Com isso há uma propriedade em JRBeanCollectionDataSource que mostra a opção booleana para que espaços vazios nos JRXML sejam lidos, e é ai o segredo basta colocar um false para que não leia os espaços em branco então ficaria deste jeito:


JRBeanCollectionDataSource jrbcds = new JRBeanCollectionDataSource(data, false);

E assim corrige e não aparece mais o erro.

Espero ter ajudado.
Até a próxima.

19 comentários:

Projeto Nutriline disse...

Excelente post Miguel, estava há um mês quebrando a cabeça com esse problema.

Projeto Nutriline disse...

Excelente post Miguel, estava há um mês quebrando a cabeça com esse problema.

.:.:: Zem ::.:. disse...

Ajudou muito. Tks.

Miguel SCJ disse...

Valeu galera! Pelo feedBack.

Unknown disse...

Fiquei uma manhã achando que era erro no meu Bean, já que estava usando o padrão do JAVAFX com Propertys. Porém tinha quase certeza que o Jasper buscava pelos getters e setters, com a dica resolvi o problema.
Valeu a dica.

Miguel SCJ disse...

Eu também cara, fiquei dias achando quer era problema de conexão e outras coisas, mas era bem mais simples do que eu achava, por isso postei para ajudar a todos.

Hamza BENNANI disse...

Merci beaucoup , ça marche parfaitement

Miguel SCJ disse...

@HAMZA BENNANI Je suis content que ça vous plaise

Anônimo disse...

Muito obrigada, ajudou bastante! Pra mim funcionou!

Miguel SCJ disse...

@Alana Que bom! O intuito do post foi esse, ajudar! Valeu pelo feedback.

Marcos disse...

Parabéns pelo postagem Miguel!

Estava tentando corrigir este problema há pelo umas 48 horas, até que encontrei sua dica.

Miguel SCJ disse...

@Marcos valeu! É bom ajudar! Valeu pelo feedback.

Google Cloud Computing disse...

Cara, Muito bom o post! Parabéns

Miguel SCJ disse...

Valeu @Google Cloud Computing que bom que ajudou!

Unknown disse...

bom so aconteceu esse erro tive que montar sub relatorios no jasperStudio vlw

Ilton Barbosa disse...

Olá,
Estou obtendo o seguinte erro ao tentar gerar o PDF:
"Unpatched iText found, cannot use glyph rendering"

Miguel SCJ disse...

@Ilton Barbosa, cara você deve está usando algo no seu relatório que é incomplativel, na versão que você usa. Veja que no código do jasper tem isso: private static boolean determinePatchedItext()
{
try
{
PdfContentByte.class.getMethod("showText", GlyphVector.class);
return true;
}
catch (NoSuchMethodException e)
{
log.warn("Unpatched iText found, cannot use glyph rendering");
return false;
}
catch (SecurityException e)
{
throw new JRRuntimeException(e);
}
}
A classe é a PdfGlyphRenderer.

Espero te ajudado.

Miguel SCJ disse...

@Guilherme oliveira valeu pelo feedback

Unknown disse...

Maravilha.. ajudou muito..