iReport não lê os beans

Estou usando o iReport Designer 4.5.1. Criei todo o layout do meu relatório. Configurei o classpath do meu projeto (apontei para onde estão os .class). Quando vou no menu “Report Query” – “JavaBean datasource” e digito o pacote em conjunto com o nome do bean que quero, não acontece nada. Parece que ele reconhece o classpath que configurei lá em Ferramentas – Opções mas não consegue ler o meu bean.class. Muito estranho.

Alguém já passou por esse problema e sabe a solução?

Desde ja agradeço.

Compila uma vez para ter certeza que os .class foram gerados
Qual pasta você colocou lá na classpath ?

Exatamente, verifique se o seu .jar ou .war foi gerado, no meu caso gero .war atravez do Maven e configuro o classpath para target/classes

e no design do relatorio para utilizar os atributos do bean, utilizo br.seupacote.SeuBean

1 curtida

Outra informação e que se vc realizar uma alteracao no seu bean e nao compilar e gerar seu projeto de novo, vc nao consiguira verificar as alterações

Eu não fiz gerando o .jar. É melhor eu gerar o .jar do projeto e inserí-lo no iReport? Depois que inserir o .jar, é só indicar o caminho dos .class…certo?

E só você apontar a pasta classes do seu projeto eu acho.
Dá uma olhada lá se existe a pasta classes, que é onde ficam os códigos compilados.

Sim. Eu dei clean e dei um rebuild. Meu projeto é em Grails. Ele gerou uma pasta chamada out onde contém os .class. Eu configuro o classpath no iReport apontando pra essa pasta mas pelo que percebi, está rolando uma exceção. Como minhas classes herdam de uma outra classe (ex: Curso extends DominioBasico; Aluno extends DominioBasico)…ta dando uma exceção dizendo que DominioBasico não foi encontrado (ClassNotFoundException). Essa classe DominioBasico faz parte de outro package…

e esse outro pacote o compilado dele não vai para a out não.
Você coloca lá no classpath do ireport o pacote raiz dos compilados entende ?

Se for em outra localização mesmo você pode colocar mais de um classpath lá no ireport também.

Cara vá em ferramentas -> Opções -> na aba ClassPath adiciona o seu .jar que você gerou e marca a opção reloadable.

Pronto ta configurado depois é só ir no JavaBeans DataSource e adicionar suas classes que quer usar no relatório lembrando que você tem que colocar o nome por extenso,ou seja, com o nome do pacote também Ex : br.com.guj.Cliente

Já fiz isso. Mas continua dando erro. Meu projeto é em Grails. To achando que ta rolando incompatibilidade com os beans do groovy. Ta lançando a seguinte exceção quando aponto pro package do classe:

java.lang.NoClassDefFoundError: Could not initialize class br.modulo.curso.Curso
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:247)
	at com.jaspersoft.ireport.designer.data.fieldsproviders.BeanInspectorPanel.exploreBean(BeanInspectorPanel.java:321)
	at com.jaspersoft.ireport.designer.data.fieldsproviders.BeanInspectorPanel.setClassName(BeanInspectorPanel.java:94)
	at com.jaspersoft.ireport.designer.data.ReportQueryDialog.jButtonReadBeanAttributes3ActionPerformed(ReportQueryDialog.java:1799)
	at com.jaspersoft.ireport.designer.data.ReportQueryDialog.access$1900(ReportQueryDialog.java:104)
	at com.jaspersoft.ireport.designer.data.ReportQueryDialog$16.actionPerformed(ReportQueryDialog.java:1212)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6290)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6055)
	at java.awt.Container.processEvent(Container.java:2039)
	at java.awt.Component.dispatchEventImpl(Component.java:4653)
	at java.awt.Container.dispatchEventImpl(Container.java:2097)
	at java.awt.Component.dispatchEvent(Component.java:4481)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4575)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4236)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4166)
	at java.awt.Container.dispatchEventImpl(Container.java:2083)
	at java.awt.Window.dispatchEventImpl(Window.java:2482)
	at java.awt.Component.dispatchEvent(Component.java:4481)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:648)
	at java.awt.EventQueue.access$000(EventQueue.java:84)
	at java.awt.EventQueue$1.run(EventQueue.java:607)
	at java.awt.EventQueue$1.run(EventQueue.java:605)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
	at java.awt.EventQueue$2.run(EventQueue.java:621)
	at java.awt.EventQueue$2.run(EventQueue.java:619)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:618)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
	at java.awt.Dialog$1.run(Dialog.java:1044)
	at java.awt.Dialog$3.run(Dialog.java:1096)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.awt.Dialog.show(Dialog.java:1094)
	at java.awt.Component.show(Component.java:1584)
	at java.awt.Component.setVisible(Component.java:1536)
	at java.awt.Window.setVisible(Window.java:841)
	at java.awt.Dialog.setVisible(Dialog.java:984)
	at com.jaspersoft.ireport.designer.data.ReportQueryDialog.setVisible(ReportQueryDialog.java:2909)
	at com.jaspersoft.ireport.designer.menu.OpenQueryDialogAction.performAction(OpenQueryDialogAction.java:59)
	at org.openide.util.actions.CallableSystemAction$1.run(CallableSystemAction.java:118)
	at org.netbeans.modules.openide.util.ActionsBridge.doPerformAction(ActionsBridge.java:77)
	at org.openide.util.actions.CallableSystemAction.actionPerformed(CallableSystemAction.java:114)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6290)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6055)
	at java.awt.Container.processEvent(Container.java:2039)
	at java.awt.Component.dispatchEventImpl(Component.java:4653)
	at java.awt.Container.dispatchEventImpl(Container.java:2097)
	at java.awt.Component.dispatchEvent(Component.java:4481)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4575)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4236)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4166)
	at java.awt.Container.dispatchEventImpl(Container.java:2083)
	at java.awt.Window.dispatchEventImpl(Window.java:2482)
	at java.awt.Component.dispatchEvent(Component.java:4481)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:648)
	at java.awt.EventQueue.access$000(EventQueue.java:84)
	at java.awt.EventQueue$1.run(EventQueue.java:607)
	at java.awt.EventQueue$1.run(EventQueue.java:605)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
	at java.awt.EventQueue$2.run(EventQueue.java:621)
	at java.awt.EventQueue$2.run(EventQueue.java:619)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
[catch] at java.awt.EventQueue.dispatchEvent(EventQueue.java:618)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Tenta ir em Ferramentas ->Opções -> General e na aba report defaults muda a linguagem para groovy

Fiz a alteração e persiste o erro.

Todos esses jars estão no classpath do iReport.

groovy-all-1.7.5.jar
commons-beanutils-1.8.2.jar
commons-collections-3.2.1.jar
commons-digester-2.1.jar
commons-javaflow-20060411.jar
commons-logging-1.1.jar
iText-2.1.7.jar

Muito estranho…mas estou achando que é incompatibilidade…

Cria uma classe de teste em groovy e gera o jar e disponibiliza ae pra ver se da o mesmo erro aqui.

Tudo ok pessoal. O problema era um maldito plugin do grails que foi baixado e instalado pelo iReport. Era um plugin “Grails e Groovy” que estava gerando conflito. E também tive que adicionar alguns jars ao classpath do iReport pra suporte ao grails. Amanhã chegando ao trabalho, colocarei os jars que são necessários. Valeu a ajuda!!

:smiley:

Os jars para o devido funcionamento:

grails-core-2.0.1.jar
grails-datastore-core-1.0.2.RELEASE.jar
grails-datastore-gorm-1.0.2.RELEASE.jar
grails-plugin-controllers-2.0.1.jar
grails-plugin-converters-2.0.1.jar
groovy-all-1.8.6.jar
iText-2.1.7.jar
spring-beans-3.1.0.RELEASE.jar

Dessa forma ocorreu tudo ok!