[英]Error when compiling Jasper Reports using Jasper Reports API 6.13.0 with Adopt OpenJDK 11
we have a utility (CompileJasperReports.jar) that we use to compile all reports found in a folder我们有一个实用程序(CompileJasperReports.jar),用于编译文件夹中的所有报告
When using JasperReports 6.7 API with Java 8 the utility runs fine.当使用 JasperReports 6.7 API 和 Java 8 时,该实用程序运行良好。 The call is
电话是
"C:\Program Files\Java\jdk1.8.0_172\bin\java" -jar CompileJasperReports.jar <in-folder containing.jrxml files> <out-folder for.jasper files> "C:\Program Files\Java\jdk1.8.0_172\bin\java" -jar CompileJasperReports.jar <in-folder contains.jrxml files> <out-folder for.jasper files>
These are the jars that are used by the CompileJasperReports.jar这些是 CompileJasperReports.jar 使用的 jars
Now we are trying to migrate to JasperReports 6.13.0 API and Java 11.现在我们正在尝试迁移到 JasperReports 6.13.0 API 和 Java 11。
The utility is compiled with Java 11 and the call to it is该实用程序是用 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 containing.jrxml files> <out-folder for.jasper files> "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-UNNAME Compile .jar <in-folder contains.jrxml files> <out-folder for.jasper files>
These are the jars that are used by the CompileJasperReports.jar这些是 CompileJasperReports.jar 使用的 jars
Most of the reports are compiled without problems, but for some the following error occurs:大多数报告编译没有问题,但对于某些会出现以下错误:
Compiling master_report.jrxml to master_report.jasper...将 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)
The main code of the utility is该实用程序的主要代码是
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();
}
}
}
Any hints are highly welcome.任何提示都非常受欢迎。
It's a bug in JasperReports 6.13.0.这是 JasperReports 6.13.0 中的一个错误。
One way to workaround the bug is to include a JDT/ECJ compiler jar in your application.解决该错误的一种方法是在您的应用程序中包含 JDT/ECJ 编译器 jar。 JasperReports 6.13.0 lists ECJ 3.21.0 as dependency, you can get it here .
JasperReports 6.13.0 将 ECJ 3.21.0 列为依赖项,您可以在此处获取。
An alternative workaround is to add the following property to jasperreports.properties, if you have one in your application:另一种解决方法是将以下属性添加到 jasperreports.properties,如果您的应用程序中有一个:
net.sf.jasperreports.legacy.compiler.source.included.parameters=REPORT_PARAMETERS_MAP
You can also set the property programmatically if you don't have/want a jasperreports.properties file:如果您没有/想要一个 jasperreports.properties 文件,您也可以以编程方式设置属性:
DefaultJasperReportsContext.getInstance().setProperty(
ReportSourceCompilation.PROPERTY_LEGACY_SOURCE_INCLUDED_PARAMETERS,
JRParameter.REPORT_PARAMETERS_MAP);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.