Pergunta

Sou novo no BIRT e estou tentando fazer o Report Engine funcionar.Estou usando os trechos de código fornecidos em http://www.eclipse.org/birt/phoenix/deploy/reportEngineAPI.php

Mas tenho uma exceção estranha:

java.lang.assertionError em org.eclipse.birt.core.framework.platform.startup (plataform.java:86)

e nada no arquivo de log.

Talvez eu tenha perdido alguma coisa na configuração?Alguém poderia me dar uma dica sobre o que posso tentar para fazê-lo funcionar?

Aqui está o código que estou usando:

public static void executeReport()
    {

        IReportEngine engine=null;
        EngineConfig config = null;

        try{
            config = new EngineConfig( );           
            config.setBIRTHome("D:\\birt-runtime-2_3_0\\ReportEngine");
            config.setLogConfig("d:/temp", Level.FINEST);
            Platform.startup( config );
            IReportEngineFactory factory = (IReportEngineFactory) Platform
            .createFactoryObject( IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY );
            engine = factory.createReportEngine( config );      

            IReportRunnable design = null;
            //Open the report design
            design = engine.openReportDesign("D:\\birt-runtime-2_3_0\\ReportEngine\\samples\\hello_world.rptdesign"); 
            IRunAndRenderTask task = engine.createRunAndRenderTask(design);         

            HTMLRenderOption options = new HTMLRenderOption();      
            options.setOutputFileName("output/resample/Parmdisp.html");
            options.setOutputFormat("html");

            task.setRenderOption(options);
            task.run();
            task.close();
            engine.destroy();
        }catch( Exception ex){
            ex.printStackTrace();
        }       
        finally
        {
            Platform.shutdown( );
        }
    }
Foi útil?

Solução

Apenas um pensamento, mas eu me pergunto se o seu uso de uma barra ao definir o logger está causando um problema? em vez de

config.setLogConfig("d:/temp", Level.FINEST);

você deve usar

 config.setLogConfig("/temp", Level.FINEST);

ou

  config.setLogConfig("d:\\temp", Level.FINEST);

Finalmente, eu percebo que este é apenas um código de exemplo, mas você certamente vai querer dividir o seu código de inicialização plataforma para fora de sua corrida e tornar tarefa. O arranque da plataforma é muito caro e deve ser feito apenas uma vez por sessão.

Eu tenho um par de projetos Eclipse que são configuração em um servidor Subversion que demonstram como usar o Relatório Engine API (REAPI) eo Design Motor API (DEAPI) que você pode achar útil como seu código fica mais complicado.

Para obter os exemplos que você vai precisar tanto o Subclipse ou os plugins subversivo e então você vai precisar para se conectar à seguinte repositório:

http://longlake.minnovent.com/repos/birt_example

Os projetos que você precisa são:

birt_api_example
birt_runtime_lib
script.lib

Você pode precisar ajustar alguns dos locais de arquivo na classe BirtUtil, mas acho que a maioria dos locais de arquivo são caminho relativo. Há mais informações sobre como usar os projectos exemplos no meu blog em http: /birtworld.blogspot.com. Em particular, este artigo deve ajudar: Testing e depurar de Relatórios

Outras dicas

Eu tive o mesmo erro que um par de meses atrás. Eu não tenho certeza do que realmente fixa-lo, mas minha aparência código como o seguinte:

        IDesignEngine engine = null;
    DesignConfig dConfig = new DesignConfig();
    EngineConfig config = new EngineConfig();
    IDesignEngineFactory factory = null;
    config.setLogConfig(LOG_DIRECTORY, Level.FINE);
    HttpServletRequest servletRequest = (HttpServletRequest) FacesContext.getCurrentInstance()
     .getExternalContext().getRequest();

    String u = servletRequest.getSession().getServletContext().getRealPath("/");
    File f = new File(u + PATH_TO_ENGINE_HOME);

    log.debug("setting engine home to:"+f.getAbsolutePath());
    config.setEngineHome(f.getAbsolutePath());

    Platform.startup(config);
    factory = (IDesignEngineFactory) Platform.createFactoryObject(IDesignEngineFactory.EXTENSION_DESIGN_ENGINE_FACTORY);
    engine = factory.createDesignEngine(dConfig);
    SessionHandle session = engine.newSessionHandle(null);

    this.design = session.openDesign(u + PATH_TO_MAIN_DESIGN);

Talvez você possa resolver o seu problema, comparando este trecho de código e seu próprio código. btw minha PATH_TO_ENGINE_HOME é "/ WEB-INF / plataforma". [Editar] Eu usei o -folder completa "plataforma" do WebViewerExample do birt-runtime-2_1_1. atm birt-runtime-2_3_0 é real. [/ edit]

Se isso não ajudar, por favor dar mais alguns detalhes (por exemplo, um trecho de código).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top