Configurar ClassPath ireport

6 respostas
M

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.

6 Respostas

M

Olá.
Bem isso aqui acontece:

… porque você fez assim:

… Mas o correto é:

[]'s
JL

M

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.

M

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.

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.

[]'s
JL

M

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.

Valeu

K

Oi,

O erro tá aqui:

java.lang.NoClassDefFoundError: modelo/EmpGeral (wrong name: br/lemaf/residuosIndustriais/modelo/EmpGeral)

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:

M

Consegui. Estou fazendo um cast como se faz em java mesmo. Adicionei a classe que eu queria no classpath como no post do Keller e funcionou blz

Criado 16 de abril de 2009
Ultima resposta 22 de abr. de 2009
Respostas 6
Participantes 3