使用 Jasper Reports API 6.13.0 和 Adopt OpenJDK 11 编译 Jasper Reports 时出错

2023-11-29

我们有一个实用程序(CompileJasperReports.jar),用于编译文件夹中找到的所有报告

当将 JasperReports 6.7 API 与 Java 8 结合使用时,该实用程序运行良好。通话内容是

"C:\Program Files\Java\jdk1.8.0_172\bin\java" -jar CompileJasperReports.jar <.jasper>

这些是 CompileJasperReports.jar 使用的 jar

  • jasperreports-6.7.0.jar
  • commons-beanutils-1.9.3.jar
  • commons-collections-3.2.2.jar
  • commons-digester-2.1.jar
  • commons-logging-1.2.jar

现在我们正在尝试迁移到 JasperReports 6.13.0 API 和 Java 11。

该实用程序是用 Java 11 编译的,对其的调用是

"C:\Program Files\AdoptOpenJDK\jdk-11.0.8.10-hotspot\bin\java" -jar --add-打开 java.xml/com.sun.org.apache.xerces.internal.util=ALL-UNNAMED CompileJasperReports .jar

这些是 CompileJasperReports.jar 使用的 jar

  • jasperreports-6.13.0.jar
  • commons-beanutils-1.9.4.jar
  • commons-collections4-4.4.jar
  • commons-digester-2.1.jar
  • commons-logging-1.2.jar

大多数报告编译没有问题,但有些报告会出现以下错误:

正在将 master_report.jrxml 编译为 master_report.jasper...

java.lang.NullPointerException
at net.sf.jasperreports.engine.design.JRAbstractCompiler.deleteSourceFiles(JRAbstractCompiler.java:407)
at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:281)
at net.sf.jasperreports.engine.JasperCompileManager.compile(JasperCompileManager.java:358)
at net.sf.jasperreports.engine.JasperCompileManager.compileToFile(JasperCompileManager.java:274)
at net.sf.jasperreports.engine.JasperCompileManager.compileToFile(JasperCompileManager.java:256)
at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:555)
at com.ietsol.enterprise.CompileJasperReports.main(CompileJasperReports.java:24)
    

该实用程序的主要代码是

private static final String defExtension = ".jrxml";
private static final String compExtension = ".jasper";

public static void main(String[] args) {
    if (!checkArguments(args)) 
        return;
    
    File inputDir = new File(args[0]);
    File[] files = inputDir.listFiles((dir, name) -> name.endsWith(defExtension));
    for (File reportDef : files) {
        String defFileName = reportDef.getName();
        String compFileName = defFileName.replace(defExtension, compExtension);
        System.out.println("Compiling " + defFileName + " to " + compFileName + "...");
        try {
            JasperCompileManager.compileReportToFile(args[0] + File.separator + defFileName, args[1] + File.separator + compFileName);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }       
}

非常欢迎任何提示。


这是 JasperReports 6.13.0 中的一个错误。

解决该错误的一种方法是在应用程序中包含 JDT/ECJ 编译器 jar。 JasperReports 6.13.0 将 ECJ 3.21.0 列为依赖项,您可以获取它here.

另一种解决方法是将以下属性添加到 jasperreports.properties(如果您的应用程序中有以下属性):

net.sf.jasperreports.legacy.compiler.source.included.parameters=REPORT_PARAMETERS_MAP

如果您没有/不需要 jasperreports.properties 文件,您还可以通过编程方式设置属性:

    DefaultJasperReportsContext.getInstance().setProperty(
            ReportSourceCompilation.PROPERTY_LEGACY_SOURCE_INCLUDED_PARAMETERS, 
            JRParameter.REPORT_PARAMETERS_MAP);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Jasper Reports API 6.13.0 和 Adopt OpenJDK 11 编译 Jasper Reports 时出错 的相关文章

随机推荐

  • 如何在 C 中使用动态多维数组?

    有人知道如何使用 C 来使用动态分配的多维数组吗 那可能吗 从 C99 开始 C 就拥有了带有动态边界的二维数组 如果您想避免在堆栈上分配此类野兽 您应该这样做 您可以轻松地一次性分配它们 如下所示 double A n malloc si
  • 使用 Sonata Admin 处理 Doctrine json_array 字段

    是否有任何 内置 方式来管理教义json array使用 Sonata Admin 的字段 我在 Symfony Sonata 文档 或代码 中找不到任何有用的文档 或相关代码 但我希望我错过了一些东西 理想情况下 我希望看到序列化的键 值
  • 当有大量输入时,Chrome 速度很慢

    在我们的 MVC 5 项目中有一个页面 用户可以在其中检查多个资产 每个资产都由复选框和名称表示 当有大量资源 大约 800 1000 个 时 Chrome 会变得非常慢 有时甚至会显示 页面不负责任 的消息 它看起来像这样 页面部分呈现并
  • 更新时触发更新列

    我写了这个函数和这个触发器 CREATE OR REPLACE FUNCTION test4 RETURNS TRIGGER AS BODY BEGIN UPDATE cf SET vol area alt RETURN null END
  • SQL 中的 IF ELSE 语句

    SELECT S Id S Name S Version S SoftNo FROM SOFTWARE S WITH NOLOCK WHERE IF S Version 0 THEN S Version gt 0 ELSE S Versio
  • Flutter中Completer和Isolates的解释和区别

    我需要在我的应用程序上返回一个 Future 因为我认为我的函数需要太多时间才能完成 所以我有两个可能的答案 使用完成者 or an Isolate 是什么让我选择其中之一 我可以将 Completer 放在我想要的任何地方并相信它会正常工
  • Android 智能手机应用程序支持 Android 平板电脑

    我正在 Android 中创建一个应用程序 最初我只为智能手机制作它 但现在我希望同样的应用程序能够支持 Android 平板电脑 问题在于缩放 它没有缩放到平板电脑屏幕的大小 我使用了 LinearLayout 高度和宽度作为 fill
  • 如何使用 css 更改图像中的蓝色背景选择颜色

    任何人都可以帮助我如何从选择的图像中删除蓝色 你可以从这里看到截图 You can use the user select property though pressing CTRL A will still cause the blue
  • 事件处理程序未添加到新邮件项目中

    我正在尝试创建一个简单的 Outlook 2010 加载项来响应新的附件事件 下面的代码仅在我取消注释 MessageBox Show 行时才有效 但删除它后 似乎没有添加事件处理程序 我在程序流程中缺少什么 这意味着模式消息框会影响事件处
  • 为什么更改 CSS 类名会破坏样式?

    这对我来说真是一件令人头疼的事 我将 Zurb Foundation 与 SASS 以及 Django 开发服务器结合使用 问题是这样的 我有一个带有一些选择器的 SCSS 文件 它们可以按需要工作 但是 如果我改变nameSCSS 和 H
  • 避免退出后返回

    我发现这些问题 其中操作员有与我相同的问题 1 2 但是 我无法解决我的问题 用户按下注销按钮 页面将重定向到index php 但浏览器中的后退按钮会将页面重定向到之前的内容 受登录保护 刷新后 一切正常 后退按钮停止工作 gt 用户被重
  • Websphere 8.5.5 上的 Spring Data JPA + Hibernate

    从 Tomcat 迁移到 WebSphere 时 我遇到了 Spring 4 Hibernate 项目无法正确加载的问题 我已经将应用程序设置为 PARENT LAST 类加载器 并将我的 Hibernate 版本恢复到 4 2 16 因为
  • 重复范围可替换为“*”是什么意思?

    我在 IntelliJ IDEA 中执行了代码分析器 它显示了弱警告 重复范围可由 替换 它在我使用正则表达式模式的下面代码行显示警告 String pattern prefix length suffix 我不确定我的代码在替换后是否可以
  • ORDER BY datetime 使查询非常慢

    我正在尝试从多个表中提取数据 当我使用 ORDER BY 日期时间字段时 它会在至少 10 秒后返回结果 但如果我在没有 ORDER BY 的情况下执行相同的查询 那么它会在 2 秒内返回结果 这是我当前的查询 SELECT ph call
  • 将字节数组转换为 Stream 时 ReadTimeout 引发异常

    我收到这个错误 ReadTimeout System IO Stream ms ReadTimeout threw an exception of type System InvalidOperationException 我的代码是 by
  • R Shiny - 将鼠标悬停在图标上时弹出窗口

    我想简单地在简单的文本行后面的图标上添加一个悬停窗口 我找到了shinyBS包 它似乎使这成为可能 但它链接到shiny输出 在闪亮的应用程序的 ui 中添加类似下面的代码可以使按钮正常工作 但在本例中它们链接到单选按钮 CVI lt c
  • Swift - 如何在迭代结构对象时改变它

    我仍然不确定结构复制或引用的规则 我想在从数组迭代结构对象时改变它 例如在这种情况下我想改变背景颜色 但编译器对我大喊大叫 struct Options var backgroundColor UIColor blackColor var
  • 如何将 Rails 助手导入到功能测试中

    你好 我最近继承了一个项目 其中前开发人员不熟悉 Rails 并决定将很多重要的逻辑放入视图助手中 class ApplicationController lt ActionController Base protect from forg
  • 使用单射函数的反值

    我试图证明这个引理 lemma assumes x inv f y and inj f and x undefined shows y range f using assms try 但 Nitpick 告诉我这个说法并不正确 Trying
  • 使用 Jasper Reports API 6.13.0 和 Adopt OpenJDK 11 编译 Jasper Reports 时出错

    我们有一个实用程序 CompileJasperReports jar 用于编译文件夹中找到的所有报告 当将 JasperReports 6 7 API 与 Java 8 结合使用时 该实用程序运行良好 通话内容是 C Program Fil