Pregunta

Soy nuevo en BIRT y estoy intentando que Report Engine se ejecute.Estoy usando los fragmentos de código proporcionados en http://www.eclipse.org/birt/phoenix/deploy/reportEngineAPI.php

Pero tengo una extraña excepción:

java.lang.assertionError en org.eclipse.birt.core.framework.platform.startup (plataforma.java:86)

y nada en el archivo de registro.

¿Quizás me perdí algo en la configuración?¿Alguien podría darme una pista sobre lo que puedo intentar para que funcione?

Aquí está el código que estoy 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( );
        }
    }
¿Fue útil?

Solución

Sólo una idea, pero me pregunto si el uso de una barra diagonal al configurar el registrador está causando un problema.en lugar de

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

Deberías usar

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

o

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

Finalmente, me doy cuenta de que esto es solo un código de muestra, pero seguramente querrás dividir el código de inicio de tu plataforma de tu tarea de ejecución y renderizado.El inicio de la plataforma es muy costoso y sólo debe realizarse una vez por sesión.

Tengo un par de proyectos de Eclipse configurados en un servidor Subversion que demuestran cómo usar la API del motor de informes (REAPI) y la API del motor de diseño (DEAPI) que pueden resultarle útiles a medida que su código se vuelve más complicado.

Para obtener los ejemplos, necesitará los complementos Subclipse o Subversive y luego deberá conectarse al siguiente repositorio:

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

Los proyectos que necesitas son:

birt_api_example
birt_runtime_lib
script.lib

Es posible que necesite ajustar algunas de las ubicaciones de los archivos en la clase BirtUtil, pero creo que la mayoría de las ubicaciones de los archivos son rutas relativas.Hay más información sobre cómo utilizar los proyectos de ejemplo en mi blog en http://birtworld.blogspot.com.En particular, este artículo debería ayudar: Pruebas y depuración de informes

Otros consejos

Tuve el mismo error hace un par de meses.No estoy muy seguro de qué lo solucionó realmente, pero mi código se parece al siguiente:

        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);

Quizás puedas resolver tu problema comparando este fragmento de código y tu propio código.Por cierto, mi PATH_TO_ENGINE_HOME es "/WEB-INF/plataforma".[editar] Utilicé la carpeta "plataforma" completa del WebViewerExample de birt-runtime-2_1_1.atm birt-runtime-2_3_0 es real.[/editar]

Si esto no ayuda, proporcione algunos detalles más (por ejemplo, un fragmento de código).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top