Problema ao passar imagem como parâmetro para o Jasper[RESOLVIDO]

Boa tarde pessoal.

Estou tentando passar o logo da empresa para o relatório(estou gerando PDF pelo jasper “iReport 3.7.0”).
Entretanto, a imagem insiste em não aparecer e não sei mais o que fazer.

Segue o código dos métodos:

private JRBeanCollectionDataSource imprimir() {

        File logo = new File("/imagens/FigLogoCliente.png");
        Map parameters = new HashMap();
        parameters.put("logo", logo);
        List<TdiTipoDependenciaInstituicao> tipoDependenciaInstituicao = TipoDependenciaInstituicaoBo.filtrarTipoDependenciaInstituicao(filtroDescricao, filtroSigla);
        JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(tipoDependenciaInstituicao, false);
        return ds;
    }

     public void imprimirPdf() {
        try{
            JRBeanCollectionDataSource ds = imprimir();
            impr.imprimirPdf(ds, "exportTdiTipoDependenciaInstituicao");
        } catch (Exception ex) {
             Logger.getLogger(TipoDependenciaInstituicaoMb.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

No iReports, no Image Expression de um componente do tipo Image, estou fazendo:

new File($P{logo})

O que há de errado? Alguém tem uma idéia?

PS: Já tentei passar .gif, pra validar a questão da extensão e não é este o problema pois, a imagem continuou ausente no PDF.

Obrigado a todos.

Olá…
Bem, primeiro: na raiz do seu S.O. existe um diretórios chamado imagens com a imagem FigLogoCliente.png lá dentro?
Quando quizer pegar a imagem por um File, deve colocar o nome completo, como: C:\diretorioDoPrograma\imagens\FigLogoCliente.png.

Mais um detalhe: Como o tipo do parametro logo já é File, não é necessário instânciar um novo objeto do tipo File.
Acredito que se fizer assim:

… tendo declarado o logo com um tipo File nos seus parametros, já funciona.

[]'s
JL

Boa tarde Mero_Aprendiz.

Então, eu alterei o parâmetro no iReport (não estou mais instanciando um File) e ainda assim, não funcionou.
Acredito que o problema não é o caminho.

Existe alguma restrição a inserir imagem na Band Title?

Realmente, tá dificil rs

Obrigado pela ajuda.

Só para tirar a duvida, vamos ver se esse File realmente aponta para um arquivo. Faça assim:

... File logo = new File("/imagens/FigLogoCliente.png"); System.out.println(logo.isFile()); Map parameters = new HashMap(); parameters.put("logo", logo); ...

Se o retorno for true, então realmente aponta para o arquivo, mas se for false então reveja o caminho que você passou como referência.

[]'s
JL

Não é restrição de imagem pois o padrão de Reports é com imagens PNG
Só que note que ele está passando a imagem como um parametro provavelmente OBJECT. e você tem que transformar para IMG.
Da uma olhada no report o tipo de parametro que voce esta passando e qual o parametro desejado…
pode ser incompatibilidade de tipos;

Mero_Aprendiz

Fiz o teste que vc sugeriu e o resultado foi true, entretanto, a imagem continua não aparecendo.

Scoobydoo

O parâmetro que eu estou recebendo no iReport é do tipo File (ja tentei Image tb sem sucesso).

Tá ficando complexo isso rs…

Estive observando atentamente o seu código e vi que você instancia um HashMap, adiciona o valor logo nele, mas não passa o mapa como parametro no construtor do JRBeanCollectionDataSource. Sendo assim não está passando o File para o relatório.

[]'s
JL

Muto obrigado Mero_Aprendiz, realmente, eu não estava passando o parameters.

Agora funcionou perfeitamente.

Obrigado pela ajuda de todos

[code] Conexao.setSQL(SQL);

        JRResultSetDataSource jrRS = new JRResultSetDataSource(Conexao.Consultar());
        InputStream is = getClass().getResourceAsStream("/reports/motorista.jasper");
    
        //HashMap map = new HashMap();
        Map parameters = new HashMap();

        //File logo = new File("/images/Linux_Logo.png");
        //File logo = new File("D:/Java/Sistemas/Sistema de Frota/Source/Sistema de Frota/src/images/Linux_Logo.png");
        //System.out.println(logo.isFile());

        //InputStream logo = getClass().getResourceAsStream("/images/Linux_Logo.png");
        //InputStream logo = getClass().getResourceAsStream("D:/Java/Sistemas/Sistema de Frota/Source/Sistema de Frota/src/images/Linux_Logo.png");

        parameters.put("logo", logo);

        JasperPrint print = JasperFillManager.fillReport(is, parameters, jrRS);
        JasperViewer viewer = new JasperViewer(print, false);            

        viewer.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        viewer.setVisible(true);[/code]

Desculpe a minha ignorância, ( :oops: ) mas ainda não estou conseguindo fazer isso, gostaria de saber onde estou errando, alguem poderia dar esta ajuda? obrigado!

Estou passando um objeto do tipo File.

         // Passagem do logotipo por parâmetro
        ServletContext servletContext = (ServletContext)getContext().getExternalContext().getContext();
        String path = servletContext.getRealPath("/imagens/BrasaoCubatao.jpg");
        File brasao = new File(path);
        parameters.put("brasao", brasao);

No relatório, criei um parameter chamado brasao que recebe um java.lang.Object.

Depois, inseri um image na posição que eu queria o brasão e associei essa parameter ao image no image express e no expression class do image, converti para java.io.File.

Desse jeito deu certo.

Obs: uso o iReport 3.7.1

Qualquer coisa, tamo ae !!!

to com problemas no servlet…

o que ele é? um JAR?

Use esse import:

import javax.servlet.ServletContext;

Sobre o ServletContext:

http://yross.wordpress.com/2009/07/22/servletconfig-x-servletcontext/

Espero ter ajudado.

http://www.guj.com.br/11958-imagem-no-ireport/

A quem possa interessar