Hi,<br />
<br />
I have a new emitter which I'm trying to run in a Java application.<br />
My Java application is the same as the ExecuteCSVReport example from the book Integrating and Extending Birt:<br />
<br />
<pre class='_prettyXprint _lang-auto _linenums:0'>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.IReportEngine;
import org.eclipse.birt.report.engine.api.IReportEngineFactory;
import org.eclipse.birt.report.engine.api.IReportRunnable;
import org.eclipse.birt.report.engine.api.IRunAndRenderTask;
import org.eclipse.birt.report.engine.emitter.html.HTML5RenderOption;
public class ExecuteHTML5Report {
/**
*
@param args
*
@throws Exception
*/
static void executeHTML5Report() throws Exception {
// TODO Auto-generated method stub
IReportEngine engine = null;
EngineConfig config = null;
config = new EngineConfig();
//config.setEngineHome("");
config.setLogConfig("c:/birt/logs", Level.FINE);
Platform.startup(config);
IReportEngineFactory factory = ( IReportEngineFactory ) Platform.createFactoryObject(
IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
engine = factory.createReportEngine(config);
engine.changeLogLevel(Level.FINEST);
IReportRunnable design = engine.openReportDesign("c://html5Test.rptdesign");
IRunAndRenderTask task = engine.createRunAndRenderTask(design);
String format = "HTML5";
HTML5RenderOption html5Options = new HTML5RenderOption();
html5Options.setOutputFormat(format);
html5Options.setOutputFileName("c://html5Test.html");
task.setRenderOption(html5Options);
task.run();
task.close();
engine.destroy();
Platform.shutdown();
System.out.println("We are done!!");
}
public static void main(String[] args){
try{
executeHTML5Report();
}catch(Exception e){
e.printStackTrace();
}
}
}</pre>
<br />
I have created this project and added all necessary jars which are mentioned in the book (birt-runtime-4-2-1 and birt-runtime-osgi-4-2-1):<br />
<br />
<br />
<pre class='_prettyXprint _lang-auto _linenums:0'>chartengineapi
com.ibm.icu_4.2.1
commons-cli-1.0
coreapi
crosstabcoreapi
dataadapterapi
dataaggregationapi
dataextraction
dteapi
emitterconfig
engineapi
flute
js
modelapi
modeloapi
odadesignapi
org.apache.commons.codec
org.eclipse.emf.common
org.eclipse.emf.ecore
org.eclipse.emf.xmi
org.w3c.css.sac
scriptapi
</pre>
<br />
When I run the application I get following exception:<br />
<br />
<br />
<span style='color: #FF0000'><pre class='_prettyXprint _lang-auto _linenums:0'>Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/core/runtime/CoreException
at org.eclipse.birt.core.framework.Platform.createPlatformLauncher(Platform.java:115)
at org.eclipse.birt.core.framework.Platform.startup(Platform.java:74)
at ExecuteHTML5Report.executeHTML5Report(ExecuteHTML5Report.java:27)
at ExecuteHTML5Report.main(ExecuteHTML5Report.java:51)
Caused by: java.lang.ClassNotFoundException: org.eclipse.core.runtime.CoreException
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 4 more</pre></span><br />
<br />
<br />
<br />
When I add all jars from (birt-runtime-4-2-1 and birt-runtime-osgi-4-2-1) I get following error:<br />
<br />
<pre class='_prettyXprint _lang-auto _linenums:0'>java.lang.SecurityException: class "org.eclipse.birt.report.engine.ir.ReportElementDesign"'s signer information does not match signer information of other classes in the same package
at java.lang.ClassLoader.checkCerts(ClassLoader.java:943)
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:657)
at java.lang.ClassLoader.defineClass(ClassLoader.java:785)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at org.eclipse.birt.report.engine.api.impl.EngineTask.setupExecutionContext(EngineTask.java:247)
at org.eclipse.birt.report.engine.api.impl.EngineTask.<init>(EngineTask.java:234)
at org.eclipse.birt.report.engine.api.impl.EngineTask.<init>(EngineTask.java:223)
at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.<init>(RunAndRenderTask.java:57)
at org.eclipse.birt.report.engine.api.impl.ReportEngineHelper.createRunAndRenderTask(ReportEngineHelper.java:311)
at org.eclipse.birt.report.engine.api.impl.ReportEngine.createRunAndRenderTask(ReportEngine.java:374)
at ExecuteHTML5Report.executeHTML5Report(ExecuteHTML5Report.java:34)
at ExecuteHTML5Report.main(ExecuteHTML5Report.java:51)</pre>
<br />
<br />
Hopefully someone knows how to resolve it.<br />
<br />
Thanks and Cheers,<br />
Samo