目标无法到达,标识符 'xxxBean' 在 运行 JasperReports 6.0.1 时解析为空

Target Unreachable, identifier 'xxxBean' resolved to null when running JasperReports 6.0.1

在我将代码添加到 运行 一个 JasperReport 之前,我有一个运行良好的应用程序。错误是众所周知的

Target Unreachable, identifier 'studentBean' resolved to null

将所需的代码添加到 运行 JasperReport 后,使用该 bean (StudenBean) 的特定页面甚至在显示之前就开始显示此类异常。经过 commenting/uncommenting 行代码后,我可以找出导致问题的确切行。如下所示:

private void gerarRelatorioPDF(List<Student> students, InputStream report, OutputStream pdf) {
    JRDataSource jrds = new JRBeanCollectionDataSource(students);
    try {
        JasperRunManager.runReportToPdfStream(report, pdf, null, jrds); // <<-- Here!!!
    } catch (Exception e) {
        e.printStackTrace();
    }
}

这是从 JasperReport 定义生成 PDF 流的行。此方法是 private 因为它被另一个 public 方法调用。 public 方法是页面中 <p:commandButton/> 的操作,所以这个按钮甚至没有被点击,因为异常阻止了页面呈现。

如果我注释那行代码,页面呈现正常,我可以点击按钮,但显然不会生成报告。

有什么解决办法吗?

经过一番研究,我决定修改我的 POM.xml(Maven 脚本)以包含 JasperReports 6.0.0。之前我只在Eclipse中安装了JasperReports 6.0.1插件,创建并配置了报表。

当我们向项目添加新报表时,Eclipse 会自动将 JasperReports 库的路径添加到 class 路径,因此项目编译正常,但似乎没有添加其他一些依赖项,并且,特别地,没有部署到应用程序服务器(在我的例子中 JBoss AS 7.1)。

更新 POM.xml 以包含 JasperReports 后,一切开始按预期运行。