Java Jasperreports在报告()上报告引擎JRuntimeException。显示
我正在使用DynamicReports和JasperReports创建一个java应用程序 尝试显示JasperReportBuilder时,出现以下错误:Java Jasperreports在报告()上报告引擎JRuntimeException。显示,java,jasper-reports,dynamic-reports,Java,Jasper Reports,Dynamic Reports,我正在使用DynamicReports和JasperReports创建一个java应用程序 尝试显示JasperReportBuilder时,出现以下错误: ... DEBUG DefaultExtensionsRegistry - Instantiating extensions registry for system.f ont.families using factory class net.sf.dynamicreports.jasper.base.JasperSyste
...
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数据库(查询工作正常)。我的一段代码(基本上是动态创建报告和列):
整个应用程序非常大,所以我只放了一段代码(我稍微清理了一下stackoverflow)。如果您需要更多的代码,请告诉我。我假设您也有类似的问题,就像我一样。我有两种部署(没有web场景):
jasperreports\u extension.properties
在自包含JAR场景中,它们相互覆盖。最后,只有一个jasperreports\u extension.properties
,因此工作的jasperreports缺少一些键值对
解决方法:
收集所有jasperreports\u extension.properties
文件,并将其内容聚合为一个jasperreports\u extension.properties
。确保您的部署获得此特殊文件,而不是原始文件。我在以下依赖工件中发现重复的jasperreports\u extension.properties
文件:
- jasperreports-6.2.2.jar
- jasperreports-fonts-6.0.0.jar
- dynamicreports-core-4.1.1.jar
- dynamicreports-googlecharts-4.1.1.jar
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);