AssertionError с API BIRT Runtime Engine

Я новичок в BIRT и пытаюсь запустить механизм отчетов. Я использую фрагменты кода, представленные в http://www.eclipse.org/birt/phoenix/deploy/reportEngineAPI.php

Но у меня есть странное исключение:

java.lang.AssertionError at 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( );
        }
    }
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
2 865
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Пару месяцев назад у меня была такая же ошибка. Я не совсем уверен, что это на самом деле исправлено, но мой код выглядит следующим образом:

        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-runtime-2_1_1. atm birt-runtime-2_3_0 актуально. [/ edit]

Если это не помогает, укажите еще несколько деталей (например, фрагмент кода).

10x, код почти такой же ... но у меня есть исключение ... в любом случае я не буду использовать BIRT, а JasperReports - они работают :)

m_pGladiator 17.09.2008 15:57
Ответ принят как подходящий

Просто мысль, но мне интересно, вызывает ли ваше использование косой черты при настройке регистратора проблемы? вместо

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

ты должен использовать

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

или же

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

Наконец, я понимаю, что это всего лишь пример кода, но вы, безусловно, захотите отделить код запуска платформы от задач запуска и рендеринга. Запуск платформы стоит очень дорого и должен выполняться только один раз за сеанс.

У меня есть несколько проектов Eclipse, которые настроены на сервере Subversion и демонстрируют, как использовать Report Engine API (REAPI) и Design Engine API (DEAPI), которые могут оказаться полезными по мере усложнения вашего кода.

Чтобы получить примеры, вам понадобятся плагины Subclipse или Subversive, а затем вам нужно будет подключиться к следующему репозиторию:

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

Вам понадобятся следующие проекты:

birt_api_example
birt_runtime_lib
script.lib

Возможно, вам придется настроить некоторые расположения файлов в классе BirtUtil, но я думаю, что большинство расположений файлов являются относительными путями. Дополнительную информацию о том, как использовать примеры проектов, можно найти в моем блоге по адресу http: /birtworld.blogspot.com. В частности, эта статья должна помочь: Тестирование и отладка отчетов

Вы правы, это всего лишь пример кода, и идеи по улучшению хороши. И косые черты значения не имеют - со всеми работает. Спасибо за ссылки на ресурсы! Наконец, он сработал, но основная причина, по которой я не буду его использовать, заключается в том, что информация о подключении сохраняется в виде двоичного файла на диске.

m_pGladiator 17.10.2008 12:07

Другие вопросы по теме