I'm trying to write an extension (plug-in) for Eclipse BIRT reporting. It involves extracting images from a file according to database entries and displaying them.
I am using Sun's JAI-ImageIO to access TIFF file data and convert to PNG for display within the report. My code complies, but throws a NoClassDefFound runtime exception:
SEVERE: Error happened while running the report.
java.lang.NoClassDefFoundError: javax/media/jai/PlanarImage
at org.eclipse.birt.sample.reportitem.rotatedlabel.util.GraphicsUtil.createDocImage
(GraphicsUtil.java:66)
at org.eclipse.birt.sample.reportitem.rotatedlabel.RotatedLabelPresentationImpl.onRowSets
(RotatedLabelPresentationImpl.java:136)
at org.eclipse.birt.report.engine.extension.ReportItemPresentationBase.onRowSets
(ReportItemPresentationBase.java:218)
at org.eclipse.birt.report.engine.presentation.LocalizedContentVisitor.
processExtendedContent(LocalizedContentVisitor.java:966)
...
I am using the PlanarImage.getAsBufferedImage() method, so it should convert to a more standard image object. I have placed the JAI jar files in my JRE and tested the same basic code outside of the Eclipse plugin environment -- that works fine. It appears to be a CLASSPATH problem, but I've verified that all JREs on my system contain the necessary jar and DLL files in the appropriate places.
For a new JDBC driver, you must place the jar(s) in a special sub-directory of plugins -- is there a special place to put other third-party jars so BIRT can use them?