我正在嘗試爲Eclipse BIRT報告編寫擴展(插件)。它涉及根據數據庫條目從文件中提取圖像並顯示它們。如何將Sun的JAI-ImageIO與Eclipse BIRT插件一起使用?
我正在使用Sun的JAI-ImageIO訪問TIFF文件數據並將其轉換爲PNG以便在報告中顯示。我的代碼是否符合,而是拋出一個NoClassDefFound運行時異常:
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)
...
我使用PlanarImage.getAsBufferedImage()方法,因此它應該轉換爲更標準的圖像對象。我將JAI jar文件放入我的JRE中,並在Eclipse插件環境外測試了相同的基本代碼 - 工作正常。它似乎是一個CLASSPATH問題,但我已驗證我的系統上的所有JRE都在適當的位置包含必需的jar和DLL文件。
對於新的JDBC驅動程序,您必須將jar放在一個特殊的插件子目錄中 - 是否有特殊的地方放置其他第三方jar讓BIRT可以使用它們?
這適用於使用OSGi環境的Eclipse插件開發之外的環境。我從RotatedLabel ReportItem的標準示例代碼開始工作,但進行了修改以實現我的目標。我昨天評論的「壓制警告」消息是假的 - 只是通過重新排序Eclipse項目的導入來解決的類路徑問題。 : - |但是,同樣的錯誤仍然存在,並伴隨着一個奇怪的JDBC異常:「無法關閉結果集。」 – sventechie 2009-08-07 15:25:51