Pessoal, quando clico no icone p imprimir aparece a msg na pagina
“Não foi possível gerar o relatório.”
publicclassRelatorioUtil{publicstaticfinalintRELATORIO_PDF=1;publicstaticfinalintRELATORIO_EXCEL=2;publicstaticfinalintRELATORIO_HTML=3;publicstaticfinalintRELATORIO_PLANILHA_OPEN_OFFICE=4;publicStreamedContentgeraRelatorio(HashMapparametrosRelatorio,StringnomeRelatorioJasper,StringnomeRelatorioSaida,inttipoRelatorio)throwsUtilException{StreamedContentarquivoRetorno=null;try{FacesContextcontext=FacesContext.getCurrentInstance();Connectionconexao=this.getConexao();StringcaminhoRelatorio=context.getExternalContext().getRealPath("pages/vip/relatorios");StringcaminhoArquivoJasper=caminhoRelatorio+File.separator+nomeRelatorioJasper+".jasper";StringcaminhoArquivoRelatorio=null;JasperReportrelatorioJasper=(JasperReport)JRLoader.loadObject(caminhoArquivoJasper);JasperPrintimpressoraJasper=JasperFillManager.fillReport(relatorioJasper,parametrosRelatorio,conexao);JRExportertipoArquivoExportado=null;StringextensaoArquivoExportado="";FilearquivoGerado=null;switch(tipoRelatorio){caseRelatorioUtil.RELATORIO_PDF:tipoArquivoExportado=newJRPdfExporter();extensaoArquivoExportado="pdf";break;caseRelatorioUtil.RELATORIO_HTML:tipoArquivoExportado=newJRHtmlExporter();extensaoArquivoExportado="html";break;caseRelatorioUtil.RELATORIO_EXCEL:tipoArquivoExportado=newJRXlsExporter();extensaoArquivoExportado="xls";break;caseRelatorioUtil.RELATORIO_PLANILHA_OPEN_OFFICE:tipoArquivoExportado=newJROdtExporter();extensaoArquivoExportado="ods";break;default:tipoArquivoExportado=newJRPdfExporter();extensaoArquivoExportado="pdf";break;}caminhoArquivoRelatorio=caminhoRelatorio+File.separator+nomeRelatorioSaida+"."+extensaoArquivoExportado;arquivoGerado=newjava.io.File(caminhoArquivoRelatorio);tipoArquivoExportado.setParameter(JRExporterParameter.JASPER_PRINT,impressoraJasper);tipoArquivoExportado.setParameter(JRExporterParameter.OUTPUT_FILE,arquivoGerado);tipoArquivoExportado.exportReport();arquivoGerado.deleteOnExit();InputStreamconteudoRelatorio=newFileInputStream(arquivoGerado);arquivoRetorno=newDefaultStreamedContent(conteudoRelatorio,"application/"+extensaoArquivoExportado,nomeRelatorioSaida+"."+extensaoArquivoExportado);}catch(JRExceptione){thrownewUtilException("Não foi possível gerar o relatório.",e);}catch(FileNotFoundExceptione){thrownewUtilException("Arquivo do relatório não encontrado.",e);}returnarquivoRetorno;}privateConnectiongetConexao()throwsUtilException{java.sql.Connectionconexao=null;try{ContextinitContext=newInitialContext();ContextenvContext=(Context)initContext.lookup("java:comp/env/");javax.sql.DataSourceds=(javax.sql.DataSource)envContext.lookup("jdbc/requmaterialBD");conexao=(java.sql.Connection)ds.getConnection();}catch(NamingExceptione){thrownewUtilException("Não foi possível encontrar o nome da conexão do banco.",e);}catch(SQLExceptione){thrownewUtilException("Ocorreu um erro de SQL.",e);}returnconexao;}}
Debugue e verifique o que está sendo recebido como exceção nesta linha
} catch (JRException e) {
throw new UtilException("Não foi possível gerar o relatório.", e);
}
tiago_
drsmachado:
Debugue e verifique o que está sendo recebido como exceção nesta linha
} catch (JRException e) {
throw new UtilException("Não foi possível gerar o relatório.", e);
}
Retornei o erro no console:
Não foi possível gerar o relatório.-net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
Source text : new java.lang.Integer(1)
Foi isso mesmo… O problema foi com as bibliotecas !
Fiz a substituição e deu tudo certo.
Agora outro problema:
fiz a exportacao do arquivo .war p o servidor, nao ta imprimindo.
Ta aparecendo aquela msg da exeption
“Nao foi possivel gerar o relatorio”
Agora to procurando o log no tomcat q esta no servidor, nao to achando o tal aqruivo de log referente ao erro.
D
danillo54
joga as bibliotecas da sua aplicação na pasta lib do tomcat
tiago_
Joguei todas as libs no tomcat do servidor e nada, continua o mesmo erro.
tiago_
Achei o erro (Achei o log):
Não foi possível gerar o relatório.-net.sf.jasperreports.engine.JRException: Byte data not found at : D:\RequisicaoMaterial\WebContent\resources\imagens\logotipo_m_SR.png
Esse eh o endereco da minha maquina local, vou ter q colocar essa imagem no serviodor nao eh isso ?
tudo por causa do D:\
Meu raciocinio ta certo ?
drsmachado
tiago__:
Achei o erro (Achei o log):
Não foi possível gerar o relatório.-net.sf.jasperreports.engine.JRException: Byte data not found at : D:\RequisicaoMaterial\WebContent\resources\imagens\logotipo_m_SR.png
Esse eh o endereco da minha maquina local, vou ter q colocar essa imagem no serviodor nao eh isso ?
tudo por causa do D:\
Meu raciocinio ta certo ?
O problema de desenvolver web, pensando desktop ou sem entender o funcionamento de web é este.
Você nunca passa um caminho absoluto, lembre-se o servidor tem um funcionamento diferente do teu sistema operacional.
Você terá que colocar a imagem dentro do teu WAR, que é gerado quando o teu projeto é compilado.
Ou seja, terá que reservar um lugar (sugiro um diretório) dentro do projeto para colocar as imagens e outros recursos dos quais o relatório depende. Aliás, deve colocar o relatório dentro do projeto também.
tiago_
drsmachado:
tiago__:
Achei o erro (Achei o log):
Não foi possível gerar o relatório.-net.sf.jasperreports.engine.JRException: Byte data not found at : D:\RequisicaoMaterial\WebContent\resources\imagens\logotipo_m_SR.png
Esse eh o endereco da minha maquina local, vou ter q colocar essa imagem no serviodor nao eh isso ?
tudo por causa do D:\
Meu raciocinio ta certo ?
O problema de desenvolver web, pensando desktop ou sem entender o funcionamento de web é este.
Você nunca passa um caminho absoluto, lembre-se o servidor tem um funcionamento diferente do teu sistema operacional.
Você terá que colocar a imagem dentro do teu WAR, que é gerado quando o teu projeto é compilado.
Ou seja, terá que reservar um lugar (sugiro um diretório) dentro do projeto para colocar as imagens e outros recursos dos quais o relatório depende. Aliás, deve colocar o relatório dentro do projeto também.
Tudo relacionado ao projeto esta dentro do projeto… Tenho uma pasta la q tem todas as imagens do programa. Nunca tive esse problema com imagens. Inclusive, os relatorios estao dentro
do programa tb… So nao sei pq essa imagem ta com esse caminho.
tiago_
Entao, criei 2 paramentros:$P{logo1} e $P{logo2} do tipo object. Depois fiz isso na minha app p chamar as 2 imagens:
ImageIcon gto = new ImageIcon(getClass().getResource("/WebContent/resources/imagens/rmRelatorio.png"));
ImageIcon gto1 = new ImageIcon(getClass().getResource("/WebContent/resources/imagens/bahiassp.jpg"));
parametrosRelatorio.put("logo2", gto.getImage());
parametrosRelatorio.put("logo1", gto1.getImage());