Pessoal, estou com um problema e não estou conseguindo resolver. Tenho um relatorio que desejo passar como parametro um objeto e dentro do relatorio mestre acessar o objeto recebido como parametro e acessar os objetos desse objeto. Ex: enviei como parametro para o relatorio o objeto Pessoa p. Dentro do relatorio mestre quero acessar o campo nome dessa pessoa. Entao tentei fazer algo do tipo $P{p.nome} mas não deu certo. Então encontrei este tópico (http://www.guj.com.br/posts/list/21241.java) no guj um modo de resolver este problema. So que não consigo de maneira alguma configurar meu classpath.
Fui em options -> classpath. Dentro dessa tela escolhi a opção add Folder e apontei para a pasta onde estava o .class da classe que eu quero que o tipo da minha variavel seja. Em seguida fui em variables e adicionei uma nova variavel com o class type com o nome da minha classe sem a extenção
Alguem sabe o que pode ser este erro?
A mensagem na hora que tento compilar o ireport é essa
Compiling to file... .\RelatorioResiduosIndustriais.jasper -> C:\Arquivos de programas\JasperSoft\iReport-2.0.5\RelatorioResiduosIndustriais.java
Error compiling the report Java source.
java.lang.NoClassDefFoundError: modelo/EmpGeral (wrong name: br/lemaf/residuosIndustriais/modelo/EmpGeral) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.lang.ClassLoader.defineClass(Unknown Source) at it.businesslogic.ireport.ReportClassLoader.loadClassData(ReportClassLoader.java:424) at it.businesslogic.ireport.ReportClassLoader.findClass(ReportClassLoader.java:379) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForRealName(JRClassLoader.java:161) at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForName(JRClassLoader.java:119) at net.sf.jasperreports.engine.base.JRBaseVariable.getValueClass(JRBaseVariable.java:129) at net.sf.jasperreports.engine.design.JRVerifier.verifyVariables(JRVerifier.java:838) at net.sf.jasperreports.engine.design.JRVerifier.verifyDataset(JRVerifier.java:2451) at net.sf.jasperreports.engine.design.JRVerifier.verifyDesign(JRVerifier.java:221) at net.sf.jasperreports.engine.design.JRVerifier.verifyDesign(JRVerifier.java:189) at net.sf.jasperreports.engine.design.JRAbstractCompiler.verifyDesign(JRAbstractCompiler.java:257) at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:144) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:591) at java.lang.Thread.run(Unknown Source)
Compilation running time: 78.
Então cara. Eu revisei o meu relatorio e não estou fazendo isso não cara. Eu estou usando variveis e não parametros. Caso você tenha algum modo para que eu consiga acessar os objetos do objeto que eu passo como parametro pode falar tb.
[quote=mtns]Então cara. Eu revisei o meu relatorio e não estou fazendo isso não cara. Eu estou usando variveis e não parametros. Caso você tenha algum modo para que eu consiga acessar os objetos do objeto que eu passo como parametro pode falar tb.
[/quote]
Como eu lhe disse no topico anterior.
Para ter acesso aos objetos de objetos, não se deve fazer como em JSTL, por exemplo:
$P{objeto.atributoQueEObjeto}
Isso não funciona no JasperReports.
O correto de se fazer é:
$P{objeto}.getAtributoQueEObjeto()
Assim você consegue acessar os atributos do objeto que você está passando como parametro.
Eu estou fazendo assim. O que esta dando errado é que eu nao estou conseguindo passar para o Jasper que o objeto p é da Classe pessoa. Quando eu altero o tipo do parametro para object o erro muda. Para acessar o objeto eu estou fazendo como você disse msm, mas o erro continua.
O que isso te diz? Que o teu classpath está incorreto.
Digamos que a classe esta em: classes/co/nz/company/User
Eu apontaria o diretorio que resolve o classpath para: -> classes.
Alem disso mapearia a classe no IReport como co.nz.company.User - Eu acho que é em Variables
Espero que isso ajude de alguma maneira.
Boa sorte! Até mais. :thumbup: