I
have just started using BIRT. Apologies if this is the wrong forum for
questions - if so where do I go for help? In the mean time...
I
have successfully created some reports and would like to use the Report Engine API.
My simple Report Engine test code is below.
When
I run it an exception is thrown at this line
IReportEngine engine =
factory.createReportEngine(config);
The
exception is
java.lang.NullPointerException
at com.nscorp.cd.report.Reporter.go(Reporter.java:28)
at com.nscorp.cd.report.Reporter.main(Reporter.java:54)
Following
the report engine docs published on the Eclipse website I think I've
setup everything correctly, JDBC drivers etc.
Any
help would be appreciated...
TIA
package
com.nscorp.cd.report;
import
java.io.File;
import
java.io.FileInputStream;
import
java.util.logging.Level;
import
org.eclipse.birt.core.framework.Platform;
import
org.eclipse.birt.report.engine.api.EngineConfig;
import
org.eclipse.birt.report.engine.api.EngineException;
import
org.eclipse.birt.report.engine.api.IReportEngine;
import
org.eclipse.birt.report.engine.api.IReportEngineFactory;
import
org.eclipse.birt.report.engine.api.IReportRunnable;
import
org.eclipse.birt.report.engine.api.IRunTask;
public class
Reporter {
public void go() {
try {
//
Configure the Engine and start the Platform
EngineConfig config = new
EngineConfig();
config.setEngineHome("C:/development/applications/reporting/BIRT/birt-runtime-2_1_1/ReportEngine");
// set
log config using ( null, Level ) if you do not want a log
//
file
config.setLogConfig("c:/tmp/logs", Level.FINE);
Platform.startup(config);
IReportEngineFactory factory =
(IReportEngineFactory) Platform
.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
IReportEngine engine =
factory.createReportEngine(config);
engine.changeLogLevel(Level.WARNING);
IReportRunnable design =
engine.openReportDesign(new FileInputStream(
new File( "C:/development/projects/ExecDash/EDApplicationV4/src/reports/HeadCount.rptdesign" ) ) );
//
Create task to run the report - use the task to execute the
//
report and save to disk.
IRunTask task = engine.createRunTask(design);
// run
the report and destroy the engine
task.run("c:/tmp/Headcount.rptdocument");
task.close();
engine.shutdown();
Platform.shutdown();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String args[]) {
try {
Reporter r = new
Reporter();
r.go();
} catch (Throwable t) {
t.printStackTrace();
}
}
}