Intégration de BIRT dans un projet java
Bonjour ,
Je souhaite generer un rapport BIRT en utilisant le code java, pour ce j'ai cherché dans le net afin de trouver des tutos pertinents
Un des sujets publiés dans ce forum répondait bien à ma question
cependant,le code proposé genere une errer au niveau de task.run() et task.close()
voici le code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| 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.EngineConstants;
import org.eclipse.birt.report.engine.api.EngineException;
import org.eclipse.birt.report.engine.api.IRenderOption;
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.api.RenderOption;
import org.eclipse.birt.report.engine.api.impl.RunAndRenderTask;
/**
* Simple BIRT Design Engine API (DEAPI) demo.
*/
public class Report
{
public static void main( String[] args ) throws EngineException
{
EngineConfig config = new EngineConfig();
IReportEngine engine = null ;
try{
config.setEngineHome( "C:\\Users\\DL\\Desktop\\eclipse Birt\\birt-runtime-4_3_2\\ReportEngine" );
config.setLogConfig("c:/birt", Level.FINE);
System.out.println("1");
Platform.startup( config );
IReportEngineFactory factory = (IReportEngineFactory) Platform
.createFactoryObject( IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY );
System.out.println("2");
engine = factory.createReportEngine( config );
System.out.println("3");
engine.changeLogLevel( Level.WARNING );
System.out.println("4");
}
catch( Exception ex)
{
System.out.println("catch");
}
System.out.println("5");
//Open the report design
IReportRunnable design = engine.openReportDesign("C:\\Users\\DL\\workspace-birt\\Tested\\Reporttest.rptdesign");
System.out.println("6");
//Create task to run and render the report,
IRunAndRenderTask task = engine.createRunAndRenderTask(design);
//Set parent classloader for engine
task.getAppContext().put(EngineConstants.APPCONTEXT_CLASSLOADER_KEY, RunAndRenderTask.class.getClassLoader());
System.out.println("7");
//Set parameter values and validate
//task.setParameterValue("Top Percentage", (new Integer(3)));;
//task.setParameterValue("Top Count", (new Integer(5)));
//task.validateParameters();
//Save as PDF File
IRenderOption options = new RenderOption();
options.setOutputFormat("pdf");
options.setOutputFileName("c:/birt/resultat.pdf");
System.out.println("8");
task.setRenderOption(options);
System.out.println("9");
//run and render report
task.run();
System.out.println("10");
task.close();
System.out.println("11"); |
et voici l'erreur
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| 1
2
3
4
5
6
7
8
9
Exception in thread "main" org.eclipse.birt.report.engine.api.EngineException: Error happened while running the report.
at org.eclipse.birt.report.engine.api.impl.EngineTask.handleFatalExceptions(EngineTask.java:2363)
at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:191)
at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:77)
at Report.main(Report.java:75)
Caused by: java.lang.IllegalArgumentException: URI is not absolute
at java.net.URI.toURL(Unknown Source)
at org.eclipse.datatools.enablement.oda.xml.util.ResourceLocatorUtil.getInputStream(ResourceLocatorUtil.java:49)
at org.eclipse.datatools.enablement.oda.xml.util.XMLSourceFromPath.openInputStream(XMLSourceFromPath.java:43)
at org.eclipse.datatools.enablement.oda.xml.util.SaxParser.<init>(SaxParser.java:81)
at org.eclipse.datatools.enablement.oda.xml.util.SaxParserNestedQueryHelper.<init>(SaxParserNestedQueryHelper.java:65)
at org.eclipse.datatools.enablement.oda.xml.util.SaxParserConsumer.<init>(SaxParserConsumer.java:105)
at org.eclipse.datatools.enablement.oda.xml.impl.ResultSet.next(ResultSet.java:142)
at org.eclipse.datatools.connectivity.oda.consumer.helper.OdaResultSet.next(OdaResultSet.java:180)
at org.eclipse.birt.data.engine.odaconsumer.ResultSet.fetch(ResultSet.java:138)
at org.eclipse.birt.data.engine.executor.cache.OdiAdapter.fetch(OdiAdapter.java:214)
at org.eclipse.birt.data.engine.executor.cache.RowResultSet.fetch(RowResultSet.java:145)
at org.eclipse.birt.data.engine.executor.cache.RowResultSet.doNext(RowResultSet.java:118)
at org.eclipse.birt.data.engine.executor.cache.RowResultSet.next(RowResultSet.java:96)
at org.eclipse.birt.data.engine.executor.transform.SimpleResultSet$RowResultSetWithResultSetScope.fetch(SimpleResultSet.java:1013)
at org.eclipse.birt.data.engine.executor.cache.RowResultSet.doNext(RowResultSet.java:118)
at org.eclipse.birt.data.engine.executor.cache.RowResultSet.next(RowResultSet.java:96)
at org.eclipse.birt.data.engine.executor.transform.SimpleResultSet.prepareFirstRow(SimpleResultSet.java:319)
at org.eclipse.birt.data.engine.executor.transform.SimpleResultSet.getResultSetIterator(SimpleResultSet.java:338)
at org.eclipse.birt.data.engine.executor.DataSourceQuery.execute(DataSourceQuery.java:1057)
at org.eclipse.birt.data.engine.impl.PreparedOdaDSQuery$OdaDSQueryExecutor.executeOdiQuery(PreparedOdaDSQuery.java:503)
at org.eclipse.birt.data.engine.impl.QueryExecutor.execute(QueryExecutor.java:1208)
at org.eclipse.birt.data.engine.impl.ServiceForQueryResults.executeQuery(ServiceForQueryResults.java:233)
at org.eclipse.birt.data.engine.impl.QueryResults.getResultIterator(QueryResults.java:178)
at org.eclipse.birt.report.engine.data.dte.QueryResultSet.<init>(QueryResultSet.java:98)
at org.eclipse.birt.report.engine.data.dte.DteDataEngine.doExecuteQuery(DteDataEngine.java:168)
at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.execute(AbstractDataEngine.java:275)
at org.eclipse.birt.report.engine.executor.ExecutionContext.executeQuery(ExecutionContext.java:1947)
at org.eclipse.birt.report.engine.executor.QueryItemExecutor.executeQuery(QueryItemExecutor.java:80)
at org.eclipse.birt.report.engine.executor.TableItemExecutor.execute(TableItemExecutor.java:62)
at org.eclipse.birt.report.engine.internal.executor.dup.SuppressDuplicateItemExecutor.execute(SuppressDuplicateItemExecutor.java:43)
at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportItemExecutor.execute(WrappedReportItemExecutor.java:46)
at org.eclipse.birt.report.engine.internal.executor.l18n.LocalizedReportItemExecutor.execute(LocalizedReportItemExecutor.java:34)
at org.eclipse.birt.report.engine.layout.html.HTMLBlockStackingLM.layoutNodes(HTMLBlockStackingLM.java:65)
at org.eclipse.birt.report.engine.layout.html.HTMLPageLM.layout(HTMLPageLM.java:92)
at org.eclipse.birt.report.engine.layout.html.HTMLReportLayoutEngine.layout(HTMLReportLayoutEngine.java:100)
at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:181)
... 2 more |
comme vous remarquez l'execution s'arrete au niveau de task.run() :(
J'ai importé les jars de Report engine du fichier runtime_xxx
S'il y a des eventuelles erreurs dans le code priere de me les corriger :oops:
Merci d'avance ;)
Intégration de BIRT dans un projet java
Pouvez vous m' expliquer clairement comment vous avez réglé le problème? Cela fait 3 jours que je cherche la solution.
S'il vous plait !