Ошибка при компиляции отчетов Jasper с использованием API Jasper Reports 6.13.0 с Adopt OpenJDK 11

у нас есть утилита (CompileJasperReports.jar), которую мы используем для компиляции всех отчетов, найденных в папке

При использовании API JasperReports 6.7 с Java 8 утилита работает нормально. Звонок

C:\Program Files\Java\jdk1.8.0_172\bin\java -jar CompileJasperReports.jar ‹in-folder, содержащий файлы .jrxml› ‹out-folder для файлов .jasper›

Это банки, которые используются CompileJasperReports.jar.

  • jasperreports-6.7.0.jar
  • Commons-beanutils-1.9.3.jar
  • Commons-коллекции-3.2.2.jar
  • Commons-дайджестер-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-opens java.xml/com.sun.org.apache.xerces.internal.util=ALL-UNNAMED CompileJasperReports.jar ‹in-folder, содержащий файлы .jrxml› ‹out-folder для файлов .jasper›

Это банки, которые используются CompileJasperReports.jar.

  • jasperreports-6.13.0.jar
  • Commons-beanutils-1.9.4.jar
  • Commons-коллекции4-4.4.jar
  • Commons-дайджестер-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();
        }
    }       
}

Любые подсказки приветствуются.


person Michael    schedule 24.07.2020    source источник


Ответы (1)