خطأ في التأكيد مع واجهة برمجة تطبيقات محرك وقت تشغيل BIRT

StackOverflow https://stackoverflow.com/questions/82123

  •  09-06-2019
  •  | 
  •  

سؤال

أنا جديد في BIRT وأحاول تشغيل محرك التقارير.أنا أستخدم مقتطفات التعليمات البرمجية المتوفرة في http://www.Eclipse.org/birt/phoenix/deploy/reportEngineAPI.php

لكن لدي استثناء غريب:

java.lang.assertionerror في org.eclipse.birt.core.framework.platform.startup (platform.java:86)

ولا شيء في ملف السجل.

ربما فاتني شيء في التكوين؟هل يمكن لأي شخص أن يعطيني تلميحًا حول ما يمكنني تجربته لتشغيله؟

إليك الرمز الذي أستخدمه:

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( );
        }
    }
هل كانت مفيدة؟

المحلول

مجرد فكرة، ولكن أتساءل عما إذا كان استخدامك للشرطة المائلة للأمام عند ضبط المسجل يسبب مشكلة؟بدلاً من

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

يجب عليك استخدام

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

أو

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

أخيرًا، أدرك أن هذه مجرد عينة من التعليمات البرمجية، ولكنك بالتأكيد تريد تقسيم كود بدء تشغيل النظام الأساسي الخاص بك من مهمة التشغيل والعرض.يعد بدء تشغيل النظام الأساسي مكلفًا للغاية ويجب إجراؤه مرة واحدة فقط في كل جلسة.

لدي مشروعان من مشاريع Eclipse تم إعدادهما في خادم Subversion يوضحان كيفية استخدام واجهة برمجة تطبيقات محرك التقارير (REAPI) وواجهة برمجة تطبيقات محرك التصميم (DEAPI) التي قد تجدها مفيدة عندما تصبح التعليمات البرمجية الخاصة بك أكثر تعقيدًا.

للحصول على الأمثلة، ستحتاج إما إلى Subclipse أو المكونات الإضافية Subversive، ثم ستحتاج إلى الاتصال بالمستودع التالي:

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

المشاريع التي تحتاجها هي:

birt_api_example
birt_runtime_lib
script.lib

قد تحتاج إلى ضبط بعض مواقع الملفات في فئة BirtUtil، ولكن أعتقد أن معظم مواقع الملفات هي مسارات نسبية.يوجد المزيد من المعلومات حول كيفية استخدام أمثلة المشاريع على مدونتي على http://birtworld.blogspot.com.على وجه الخصوص، يجب أن تساعد هذه المقالة: اختبار وتصحيح التقارير

نصائح أخرى

لقد حدث لي نفس الخطأ منذ شهرين.لست متأكدًا تمامًا مما تم إصلاحه بالفعل ولكن الكود الخاص بي يبدو كما يلي:

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

ربما يمكنك حل مشكلتك عن طريق مقارنة مقتطف الشفرة هذا والتعليمات البرمجية الخاصة بك.راجع للشغل PATH_TO_ENGINE_HOME الخاص بي هو "/WEB-INF/platform".[عدل]لقد استخدمت مجلد "النظام الأساسي" الكامل من WebViewerمثال لوقت تشغيل birt-2_1_1.ATM Birt-Runtime-2_3_0 هو الفعلي.[/عدل]

إذا لم يساعد ذلك، فيرجى تقديم بعض التفاصيل الإضافية (على سبيل المثال، مقتطف الشفرة).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top