Я новичок в 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( );
}
}




Пару месяцев назад у меня была такая же ошибка. Я не совсем уверен, что это на самом деле исправлено, но мой код выглядит следующим образом:
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]
Если это не помогает, укажите еще несколько деталей (например, фрагмент кода).
Просто мысль, но мне интересно, вызывает ли ваше использование косой черты при настройке регистратора проблемы? вместо
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. В частности, эта статья должна помочь: Тестирование и отладка отчетов
Вы правы, это всего лишь пример кода, и идеи по улучшению хороши. И косые черты значения не имеют - со всеми работает. Спасибо за ссылки на ресурсы! Наконец, он сработал, но основная причина, по которой я не буду его использовать, заключается в том, что информация о подключении сохраняется в виде двоичного файла на диске.
10x, код почти такой же ... но у меня есть исключение ... в любом случае я не буду использовать BIRT, а JasperReports - они работают :)