Uses or overrides a deprecated API

7 respostas
M

Ola…

Estou com um problema na criação do WAR de uma aplicação. segue abaixo o erro quando e criado o WAR

Compiling 16 source files to /Users/michaelgerson/Desktop/Transparencia/build/web/WEB-INF/classes
[color=red]Note: /Users/michaelgerson/Desktop/Transparencia/src/java/br/gov/rr/transparencia/controller/RelatorioUtil.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.[/color]
Copying 1 file to /Users/michaelgerson/Desktop/Transparencia/build/web/WEB-INF/classes
compile:
compile-jsps:
Created dir: /Users/michaelgerson/Desktop/Transparencia/dist
Building jar: /Users/michaelgerson/Desktop/Transparencia/dist/Transparencia.war
do-dist:
dist:
CONSTRUÍDO COM SUCESSO (tempo total: 4 segundos)

Segue a Classe

package br.gov.rr.transparencia.controller;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import javax.faces.context.FacesContext;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.oasis.JROdtExporter;
import net.sf.jasperreports.engine.util.JRLoader;
import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;


public class RelatorioUtil {

    public static final int RELATORIO_PDF = 1;
    public static final int RELATORIO_EXCEL = 2;
    public static final int RELATORIO_HTML = 3;
    public static final int RELATORIO_PLANILHA_OPEN_OFFICE = 4;

    public StreamedContent geraRelatorio(HashMap parametrosRelatorio, String nomeRelatorioJasper, String nomeRelatorioSaida, int tipoRelatorio) throws UtilException {
        StreamedContent arquivoRetorno = null;

        try {
            FacesContext context = FacesContext.getCurrentInstance();
            Connection conexao = this.getConexao();
            String caminhoRelatorio = context.getExternalContext().getRealPath("jasper");
            String caminhoArquivoJasper = caminhoRelatorio + File.separator + nomeRelatorioJasper + ".jasper";
            String caminhoArquivoRelatorio = null;

            JasperReport relatorioJasper = (JasperReport) JRLoader.loadObject(caminhoArquivoJasper);
            JasperPrint impressoraJasper = JasperFillManager.fillReport(relatorioJasper, parametrosRelatorio, conexao);
            JRExporter tipoArquivoExportado = null;
            String extensaoArquivoExportado = "";
            File arquivoGerado = null;

            switch (tipoRelatorio) {
                case RelatorioUtil.RELATORIO_PDF:
                    tipoArquivoExportado = new JRPdfExporter();
                    extensaoArquivoExportado = "pdf";
                    break;
                case RelatorioUtil.RELATORIO_HTML:
                    tipoArquivoExportado = new JRHtmlExporter();
                    extensaoArquivoExportado = "html";
                    break;
                case RelatorioUtil.RELATORIO_EXCEL:
                    tipoArquivoExportado = new JRXlsExporter();
                    extensaoArquivoExportado = "xls";
                    break;
                case RelatorioUtil.RELATORIO_PLANILHA_OPEN_OFFICE:
                    tipoArquivoExportado = new JROdtExporter();
                    extensaoArquivoExportado = "ods";
                    break;
                default:
                    tipoArquivoExportado = new JRPdfExporter();
                    extensaoArquivoExportado = "pdf";
                    break;
            }
            caminhoArquivoRelatorio = caminhoRelatorio + File.separator + nomeRelatorioSaida + "." + extensaoArquivoExportado;
            arquivoGerado = new java.io.File(caminhoArquivoRelatorio);
            tipoArquivoExportado.setParameter(JRExporterParameter.JASPER_PRINT, impressoraJasper);
            tipoArquivoExportado.setParameter(JRExporterParameter.OUTPUT_FILE, arquivoGerado);
            tipoArquivoExportado.exportReport();
            arquivoGerado.deleteOnExit();

            InputStream conteudoRelatorio = new FileInputStream(arquivoGerado);
            arquivoRetorno = new DefaultStreamedContent(conteudoRelatorio, "application/" + extensaoArquivoExportado, nomeRelatorioSaida + "." + extensaoArquivoExportado);
        } catch (JRException e) {
            throw new UtilException("Nao foi possovel gerar o relatorio.", e);
        } catch (FileNotFoundException e) {
            throw new UtilException("Arquivo do relatorio nao encontrado.", e);
        }
        return arquivoRetorno;
    }

    private Connection getConexao() throws UtilException {
        Connection connection = null;
        String url = "org.postgresql.Driver";
        String bd = "jdbc:postgresql://192.168.227.16:5432/cti";
        String usuario = "postgres";
        String senha = "Maker@1";



        //String bd = "jdbc:postgresql://127.0.0.1:5432/transparencia";
        //String usuario = "postgres";
        //String senha = "bdm!c0l";


        try {
            Class.forName(url);
            connection = DriverManager.getConnection(bd, usuario, senha);
            return connection;
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    }
}

7 Respostas

F

a classe RelatorioUtil.java está usando ou sobreescrevendo uma API depreciada, tente ver se não há nada ai muito antigo que necessite ser atualizado.

R

Não é um erro, é uma advertência. O compilador está chamando a sua atenção para o fato de que o seu código-fonte está utilizando uma API que foi marcada como obsoleta/desencorajada (a famosa anotação @Deprecated). Ao marcar um elemento com @Deprecated, o fornecedor de uma API está sinalizando a seus usuários que aquele elemento pode mudar ou desaparecer numa próxima versão, ou que aquele elemento não é a maneira mais interessante de resolver um determinado problema. Assim, vale a pena recompilar seu projeto passando o flag “-Xlint:deprecation” (sem as aspas) para o compilador. Ao fazer isso, ele emitirá uma listagem detalhada dos locais do seu código-fonte que estão usando elementos marcados com @Deprecated.

M

quando vou implantar no servidor aparece este erro:

Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.RuntimeException: java.lang.NoClassDefFoundError: Lorg/primefaces/model/StreamedContent;. Please see server.log for more details.

R

O arquivo JAR do PrimeFaces foi incluído no arquivo WAR da sua aplicação? Ele parece estar ausente.

M

apareceu este erro usando o “-Xlint:deprecation”

/Users/michaelgerson/Desktop/Transparencia/src/java/br/gov/rr/transparencia/controller/RelatorioUtil.java:39: warning: [deprecation] loadObject(java.lang.String) in net.sf.jasperreports.engine.util.JRLoader has been deprecated
JasperReport relatorioJasper = (JasperReport) JRLoader.loadObject(caminhoArquivoJasper);
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 warning

M

Sim Ele esta incluso… adicionei ele ja direto do netbeans

R

A advertência de compilação indica que o método JRLoader.loadObject() foi marcado com @Deprecated. Consultando a documentação deste método, vemos que agora a prática recomendada é usar o método JRLoader.loadObjectFromFile():
http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/util/JRLoader.html#loadObject(java.lang.String)

Quanto à inclusão do JAR do PrimeFaces, você tem certeza que ele está sendo incluído no WAR da sua aplicação? Renomeie o arquivo WAR com a extensão ZIP, abra-o num programa capaz de processar arquivos ZIP e assegure-se de que o arquivo JAR do PrimeFaces está lá. Imagino que, apesar de o arquivo JAR estar registrado no projeto do NetBeans (se não estivesse, sua aplicação não iria compilar), ele não está sendo incluído no WAR de distribuição.

Criado 13 de setembro de 2012
Ultima resposta 13 de set. de 2012
Respostas 7
Participantes 3