しーくんです。
開発中にハマった事についてのメモを書きます。 今後も技術的なメモを書いてきたいと思ってます。 まずは1個目です。
Eclipseプラグイン(RCP)からJasperReportsを使用した場合、 以下のエラーメッセージが出力され、レポートが作成されません。 内容としては、net.sf.jasperreports.engine.fill.JRFillParameterクラスが見つからない旨のエラーです。
Unhandled event loop exception Reason: net/sf/jasperreports/engine/fill/JRFillParameter
対処方法としては、以下の例のように、 クラスローダーを切り替えてからJasperReportsを使用するとうまくいきます。
Thread currentThread = Thread.currentThread(); ClassLoader save = currentThread.getContextClassLoader();
try { currentThread.setContextClassLoader( JasperCompileManager.class.getClassLoader()); JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list); JasperPrint print = JasperFillManager.fillReport(jasperPath, paramMap, ds);
JasperExportManager.exportReportToPdfFile(print, destPath);
} catch (Exception e) { e.printStackTrace(); } finally { currentThread.setContextClassLoader(save); }
また別の方法として、OSGiマニフェストファイルにEclipse-BuddyPolicyを定義することで対応できるようですが試していません。
|