iReport - Could not load object from location [Não resolvido]  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
Bruno_Leonardo
JavaEvangelist

Membro desde: 25/01/2008 17:13:57
Mensagens: 406
Offline

Galera,

Seguinte, tenho um relatório que chama um subrelatório. Visualizando pelo iReport, ele consegue chamar o subrelatório, porém no java não.
Tenho um jar adicionado na minha app. que possui os .jasper. Aí busco eles assim:

Passo como parâmetro para o relatório principal o subrelatório assim:

E o parâmetro SUBREPORT_DIR do relatório principal no iReport está configurado assim (Isso na aba Sub-relatório):

Pensei que pudesse ser algum problema relacionado ao tipo das variáveis pathRelGeral e pathSubRel que são do tipo InputStream. Porém já alterei no ireport passando o tipo de SUBREPORT_DIR que é atualmente Object para InputStream e mesmo assim a exceção abaixo é lançada:


This message was edited 2 times. Last update was at 03/10/2008 10:52:51



Bruno_Leonardo
JavaEvangelist

Membro desde: 25/01/2008 17:13:57
Mensagens: 406
Offline

Galera, algum ser caridoso que possa me ajudar?


Ironlynx
Moderador
[Avatar]

Membro desde: 02/05/2003 01:06:41
Mensagens: 3515
Localização: The other side of the screen
Offline

Bruno, você conseguiu matar esse problema?
Eu fui criar um main de testes aqui:

E sempre recebo uma stack:
net.sf.jasperreports.engine.JRException: Could not load object from location : .\/Auxiliar.jasper
Isso só ocorre com o subrelatório, que no relatório principal tá apontado assim:

Tentei usar o getClass()..getClassLoader().getResourceAsStream(...) e também não obtive sucesso.

Não basta persistir...tem que prevalecer!
Ironlynx
Anarquista de Sistemas
http://osereojava.blogspot.com/
[WWW]
djemacao
GUJ Master

Membro desde: 04/06/2007 17:47:24
Mensagens: 1030
Offline

O que eu aprendi em livro é transformar o path relativo em físico. Funciona 100%.

"Quanto mais aprendo mais tenho consciência que nada sei."
Ironlynx
Moderador
[Avatar]

Membro desde: 02/05/2003 01:06:41
Mensagens: 3515
Localização: The other side of the screen
Offline

O que eu aprendi em livro é transformar o path relativo em físico. Funciona 100%.

Eu não entendi direito a sua afirmação.Sim, eu posso dar um:new File("/report").getCanonicalPath() e descobrir o caminho,mas num servidor(por exemplo) não se tem essa facilidade.Pode-se mudar de Diretório(do E para o G por exemplo) e vc nem fica sabendo.
Aliás, eu tô com o mesmo problema com a exibição do meu banner pelo IReport.o Caminho completo "C:.." sempre funciona, mas o relativo nunca.

Não basta persistir...tem que prevalecer!
Ironlynx
Anarquista de Sistemas
http://osereojava.blogspot.com/
[WWW]
djemacao
GUJ Master

Membro desde: 04/06/2007 17:47:24
Mensagens: 1030
Offline

Tb não entendi o seu problema, olha como faço:




Podem mudar de lugar em qualquer canto que funciona 100%. E eu uso no servidor host.

"Quanto mais aprendo mais tenho consciência que nada sei."
Ironlynx
Moderador
[Avatar]

Membro desde: 02/05/2003 01:06:41
Mensagens: 3515
Localização: The other side of the screen
Offline

Usando servlet context, eu creio que realmente irá funcionar.Mas e se vc estiver de forma desktop?

Não basta persistir...tem que prevalecer!
Ironlynx
Anarquista de Sistemas
http://osereojava.blogspot.com/
[WWW]
71C4700
JavaEvangelist
[Avatar]

Membro desde: 25/03/2008 08:18:35
Mensagens: 364
Localização: Por ai...
Offline

E porque ao inves de utilizar :



Voce passa o caminho do relatorio como paramtro,sendo este completo? Ai voce só teria no relatorio



Ficaria mais facil de controlar....

[]This is Job!!!°°°°°
djemacao
GUJ Master

Membro desde: 04/06/2007 17:47:24
Mensagens: 1030
Offline

Ironlynx wrote:Usando servlet context, eu creio que realmente irá funcionar.Mas e se vc estiver de forma desktop?






"Quanto mais aprendo mais tenho consciência que nada sei."
Ironlynx
Moderador
[Avatar]

Membro desde: 02/05/2003 01:06:41
Mensagens: 3515
Localização: The other side of the screen
Offline

Voce passa o caminho do relatorio como paramtro,sendo este completo? Ai voce só teria no relatorio

Na verdade, não!
Eu passo ele completo quando eu estou testando aqui, mas não quando eu quero por num servlet.


ServletContext scontext = (ServletContext)context.getExternalContext().getContext();
parameters.put("SUBREPORT_DIR", scontext.getRealPath("CAMINHODODIRETORIORELATIVOAQUI/")+"/");


Funciona para os reports, mas não sei pq não funciona para o Logo!Tipo:"./WEB-INF/report/Logo.jpg"; nunca acha o logotipo do relatório!

Não basta persistir...tem que prevalecer!
Ironlynx
Anarquista de Sistemas
http://osereojava.blogspot.com/
[WWW]
marcoscorso
Virtual Machine Man

Membro desde: 19/09/2006 11:04:27
Mensagens: 612
Offline

olá
estou tentando fazer a mesma coisa e estou com o mesmo problema
alguém resolveu ? como ?
obrigado
Mero_Aprendiz
JavaEvangelist
[Avatar]

Membro desde: 25/08/2004 11:32:27
Mensagens: 380
Localização: Goiânia
Offline

Ironlynx wrote:
Voce passa o caminho do relatorio como paramtro,sendo este completo? Ai voce só teria no relatorio

Na verdade, não!
Eu passo ele completo quando eu estou testando aqui, mas não quando eu quero por num servlet.


ServletContext scontext = (ServletContext)context.getExternalContext().getContext();
parameters.put("SUBREPORT_DIR", scontext.getRealPath("CAMINHODODIRETORIORELATIVOAQUI/")+"/");


Funciona para os reports, mas não sei pq não funciona para o Logo!Tipo:"./WEB-INF/report/Logo.jpg"; nunca acha o logotipo do relatório!


Olá...
Cara, depois de penar um tempo sobre a melhor estratégia de passar os caminhos necessários para gerar os relatórios (inclusive as imagens) fiz assim:
Quando a aplicação sobre no tomcat, tenho uma Listener que é chamado e é responsável por setar o caminho fisíco da aplicação:



Então, quando eu preciso informar o caminho dos relatórios, apenas faço:



O corpo do método é:



e para as imagens faço



O corpo do método é:



Bem simples, mas funciona bem bacana.

[]'s
JL
marcoscorso
Virtual Machine Man

Membro desde: 19/09/2006 11:04:27
Mensagens: 612
Offline

mas usando servlet ficaria exclusivo para web correto ?
se colocar o caminho, usando file, ficaria para desktop

meu problema é que vou usar esse relatorio no java web start
lauronolasco
JavaEvangelist
[Avatar]

Membro desde: 30/11/2007 19:19:59
Mensagens: 409
Localização: Vitória da Conquista - BA
Offline

também estou com um problema similar.
tenho um relatorio com alguns sub-relatorios.
estou usando o netbeans... minha aplicação é em swing.
quando executo pelo netbeans, funciona normal..
mas quando vou executar o .jar da distribuição, ele não acha o sub_relatorio.jasper..

estou passando o parametro SUBREPORT_DIR com a url completa...
tipo: file:.../.../Aplicacao.jar?/.../.../relatorios/
ou algo parecido.... sei que é o mesmo caminho que uso para achar o inputstream do relatorio principal..

acabei de ler aqui na intenet que, se vc passar o parametro SUBREPORT_DIR como "" (string vazia),
o jasper usa o mesmo diretorio do relatorio raiz...

vou testar e posto o retorno...

"Conhecimento nunca é demais!"
[Email] [MSN]
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team