Question

Je suis nouveau dans BIRT et j'essaie de faire fonctionner le moteur de rapport. J'utilise les extraits de code fournis dans http://www.eclipse.org /birt/phoenix/deploy/reportEngineAPI.php

Mais j'ai une exception étrange:

  

java.lang.AssertionError       à org.eclipse.birt.core.framework.Platform.startup (Platform.java:86)

et rien dans le fichier journal.

Peut-être que j'ai raté quelque chose dans la configuration? Quelqu'un pourrait-il me donner un indice sur ce que je peux essayer de faire fonctionner?

Voici le code que j'utilise:

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( );
        }
    }
Était-ce utile?

La solution

Juste une pensée, mais je me demande si votre utilisation d’une barre oblique lors du paramétrage de l’enregistreur pose un problème? au lieu de

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

vous devriez utiliser

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

ou

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

Enfin, je réalise qu’il ne s’agit que d’un exemple de code, mais vous voudrez certainement séparer le code de démarrage de votre plate-forme de votre tâche d’exécution et de rendu. Le démarrage de la plate-forme est très coûteux et ne devrait être effectué qu'une fois par session.

J'ai quelques projets Eclipse configurés sur un serveur Subversion qui expliquent comment utiliser l'API REAPI (Report Engine) et l'API DEAPI (Design Engine) qui peuvent s'avérer utiles au fur et à mesure que votre code se complique.

Pour obtenir les exemples, vous aurez besoin des plugins Subclipse ou Subversive, puis vous devrez vous connecter au référentiel suivant:

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

Les projets dont vous avez besoin sont:

birt_api_example
birt_runtime_lib
script.lib

Vous devrez peut-être ajuster certains emplacements de fichiers dans la classe BirtUtil, mais je pense que la plupart des emplacements de fichiers sont des chemins relatifs. Vous trouverez plus d'informations sur l'utilisation des exemples de projets sur mon blog à l'adresse http: /birtworld.blogspot.com. Cet article devrait notamment vous aider: Tester et déboguer des rapports

Autres conseils

J'ai eu la même erreur il y a deux mois. Je ne suis pas tout à fait sûr de ce qui a été corrigé, mais mon code ressemble à ce qui suit:

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

Peut-être pouvez-vous résoudre votre problème en comparant cet extrait de code et votre propre code. Voici mon PATH_TO_ENGINE_HOME est "/ WEB-INF / platform". [edit] J'ai utilisé le dossier "plate-forme" complet du WebViewerExample de birt-runtime-2_1_1. atm birt-runtime-2_3_0 est réel. [/ edit]

Si cela ne vous aide pas, donnez quelques détails supplémentaires (par exemple, un extrait de code).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top