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

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!