【发布时间】:2016-05-25 14:29:08
【问题描述】:
我正在使用 DynamicReports 和 JasperReports 创建一个 java 应用程序。
在尝试显示 JasperReportBuilder 时,我收到此错误:
...
DEBUG DefaultExtensionsRegistry - Instantiating extensions registry for system.f
ont.families using factory class net.sf.dynamicreports.jasper.base.JasperSystemF
ontExtensionsRegistryFactory
Exception in thread "AWT-EventQueue-0" Exception in thread "AWT-EventQueue-0"
Exception: net.sf.jasperreports.engine.JRRuntimeException thrown from the UncaughtExceptionHandler in thread "AWT-EventQueue-0"
我真的在这里缺乏想法。我正在使用 JDBC-ODBC 桥来获取 Access 数据库(查询有效)。我的一段代码(基本上是动态创建报告和列):
JasperReportBuilder report = report();
try{
report.setTemplate(Templates.reportTemplate);
StyleBuilder titleStyle = stl.style(boldCenteredStyle)
.setVerticalAlignment(VerticalAlignment.MIDDLE)
.setFontSize(15);
report.title(cmp.horizontalList().add(cmp.image("resources/icon.jpg").setFixedDimension(80, 80)
, cmp.text("Gestion de rapports").setStyle(titleStyle)
, cmp.text(rapportSelect.getNomListe()).setStyle(titleStyle).setHorizontalAlignment(HorizontalAlignment.RIGHT))
.newRow().add(cmp.filler().setStyle(stl.style().setTopBorder(stl.pen2Point())).setFixedHeight(10)));
Iterator it = rapportSelect.getMappingColonnes().entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry)it.next();
report.columns(col.column((String)pair.getKey(), (String)pair.getValue(), type.stringType()));
}
report.pageFooter(Templates.footerComponent);
String sqlQuery = rapportSelect.getSqlQuery() + " ";
Statement stmt = GestionDbAdapter.getInstance().get().createStatement();
ResultSet rs = stmt.executeQuery(sqlQuery);
report.setDataSource(rs);
report.show(false);
整个应用程序非常大,所以我只放了一段代码(我为 stackoverflow 稍微清理了一下)。如果您需要更多代码,请告诉我。
【问题讨论】:
-
您是否将所有依赖项部署到 1 个单独的 JAR 中?恐怕 jasperreports_extension.properties 位于同一个地方的 1 个以上的 JAR 中,如果您将所有这些 JAR 合并到 1 个 JAR 中,那么这个属性文件会被覆盖。这意味着缺少某些属性。见:dynamicreports.org/forum/viewtopic.php?f=1&t=1388
标签: java jasper-reports dynamic-reports