gpt4 book ai didi

java - Jasperreports 引擎 JRRuntimeException on report().show

转载 作者:行者123 更新时间:2023-11-30 10:44:20 25 4
gpt4 key购买 nike

我正在使用 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 稍微清理了一下)。如果您需要更多代码,请告诉我。

最佳答案

我假设你和我一样有类似的问题。我有 2 种部署(无网络场景):

  1. 在单独的文件中使用所有依赖 JAR 的应用程序部署
  2. 独立部署,将所有 JAR 打包到一个 jar 中(“jar-with-dependencies”)

第二种情况未正确执行,并在与您描述的相同位置出现相同错误而中止。

原因是几个依赖的 JasperReport JAR 在默认包级别的相同位置包含一个具有相同名称的属性文件:jasperreports_extension.properties

在独立的 JAR 场景中,它们会相互覆盖。最后,只有一个 jasperreports_extension.properties,因此工作的 JasperReport 缺少一些键值对。

解决方法:

收集所有 jasperreports_extension.properties 文件并将它们的内容聚合到一个 jasperreports_extension.properties 中。确保您的部署获取此特殊文件而不是原始文件。我在以下相关工件中发现了重复的 jasperreports_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

关于java - Jasperreports 引擎 JRRuntimeException on report().show,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37440172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com