[BIRT报表]Platform.createFactoryObject returns null

发布时间:2024-02-21 16:30

config = new EngineConfig();
config.setEngineHome(birtHome.getAbsolutePath());
if (birtLog != null) {
config.setLogConfig(birtLog, Level.WARNING);
}
System.out.println(\"config=\" +config);
Platform.startup(config);
IReportEngineFactory factory = (IReportEngineFactory) Platform
.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
System.out.println(\"factory=\" +factory);

engine = factory.createReportEngine(config);

======================================分割线======================================

在设计BIRT报表系统的时候,调用报表引擎,但是在运行的时候,出现错误:
exception is java.lang.NullPointerException

仔细排查,发现是在这一步:
IReportEngineFactory factory = (IReportEngineFactory) Platform
.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);

获取factory的时候,获取的值为空:

google了很久,发现国外很多人也出现同样的问题,有些是和平台版本有关,比如在ios,Linux上运行正常,只在windows上有错:

我也遇到同样错误,最终solution由两个:
1.去网上下载一个同样版本的birt-runtime,将其中的ReportEngine替换掉自己的工程里面的报表引擎;

2.这个方法解决了我的问题,但是不一定对其他朋友适用:

删除工程中:

ReportEngine\\configuration\\org.eclipse.core.runtime\\.manager

目录下的所有文件。

再次运行,factory(Platform.createFactoryObject)就不为空了。


ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号