Fixed
Details
Assignee
Daniel TammDaniel TammReporter
Daniel TammDaniel TammLabels
Due date
Jun 29, 2012Original estimate
Time tracking
3h loggedComponents
Fix versions
Affects versions
Priority
Major
Details
Details
Assignee
Daniel Tamm
Daniel TammReporter
Daniel Tamm
Daniel TammLabels
Due date
Jun 29, 2012
Original estimate
Time tracking
3h logged
Components
Fix versions
Affects versions
Priority
Created June 14, 2012 at 2:34 AM
Updated March 13, 2014 at 2:18 PM
Resolved June 22, 2012 at 7:37 AM
It seems as if JasperReports is not working in iDempiere. When a Jasper report is used for, for instance an Invoice the following error message occurs:
-----------> ProcessUtil.startJavaProcess: org.compiere.report.ReportStarter [13]
java.lang.ClassNotFoundException: org.compiere.report.ReportStarter
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at org.adempiere.util.ProcessUtil.startJavaProcess(ProcessUtil.java:180)
at org.adempiere.util.ProcessUtil.startJavaProcess(ProcessUtil.java:137)
at org.adempiere.util.ProcessUtil.startJavaProcess(ProcessUtil.java:126)
at org.compiere.process.ServerProcessCtl.startProcess(ServerProcessCtl.java:413)
at org.compiere.process.ServerProcessCtl.run(ServerProcessCtl.java:279)
at org.compiere.process.ServerProcessCtl.process(ServerProcessCtl.java:106)
at org.compiere.print.ServerReportCtl.runJasperProcess(ServerReportCtl.java:107)
at org.compiere.print.ReportCtl.startDocumentPrint(ReportCtl.java:315)
at org.compiere.print.ReportCtl.startDocumentPrint(ReportCtl.java:282)
at org.compiere.print.ReportCtl.start(ReportCtl.java:126)
at org.compiere.print.ReportCtl.start(ReportCtl.java:98)
at org.compiere.apps.AbstractProcessCtl.run(AbstractProcessCtl.java:279)
Looking at the plugin dependencies the class org.compiere.report.ReportStarter is located in plugin org.adempiere.report.jasper and the org.adempiere.util.ProcessUtil class which is in plugin org.adempiere.base tries to load the ReportStarter class.
If I understand osgi correctly, the base plugin only see the classes of the plugins on which it depends. org.adempiere.base doesn't depend on org.adempiere.report.jasper.
org.adempiere.report.jasper depends on org.adempiere.base so org.adempiere.base can't depend on org.adempiere.report.jasper.
When checking the "legacy report format" I see that the code for that resides in the org.adempiere.base plugin.
The way I see it, some classes must move. Either ProcessUtil moves out of org.adempiere.base or org.adempiere.report.jasper moves into org.adempiere.base.
Any suggestions? Have I understood the problem correct?