如何在带有 OpenJDK11 的 IntelliJ IDEA 中使用 Jasper Reports

How to use Jasper Reports in IntelliJ IDEA with OpenJDK11

所以我一直在 JDK8(Netbeans 11.1 和 JavaFX 2)上使用 Jasper Reports,一切都很简单。现在,我正在使用 gradle(IntelliJ IDEA 和 JavaFX 14)从 JDK8 迁移到 OpenJDK11,并且我坚持使用 Jasper Reports。 我尝试添加依赖项 compile 'net.sf.jasperreports:jasperreports:6.12.2' 并成功下载了 jar 文件,但是当我转到我的代码并尝试导入必要的库时,我找不到它们。

这是我在 JDK8 中使用的代码(我认为在 OpenJDK11 中应该是相同的):

@FXML
public void print(ActionEvent actionEvent) {
        // My report
        JasperReport jreport = JasperCompileManager.compileReport("path\to\my\report\newReport.jrxml");

        // The data source to use to create the report
        JRBeanCollectionDataSource jcs = new JRBeanCollectionDataSource(list);
        JasperPrint jprint = JasperFillManager.fillReport(jreport, null, jcs);

        // Viewing the report
        JasperViewer.viewReport(jprint, false);
    }

这是我需要的库(net.sf 根本没有检测到,即使下载了 jar 文件):

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;

所以经过一些研究和许多新问题,我想我找到了一个简单的解决方案:

  1. 将此依赖项添加到您的 gradle 项目(并构建它):
implementation 'net.sf.jasperreports:jasperreports:6.12.2'
implementation 'net.sf.jasperreports:jasperreports-fonts:6.12.2'
  1. 模块-info.java中添加requires jasperreports;
  2. 如果你运行你的项目,会出现关于iText2.1.7的异常,所以你需要做的就是添加这个依赖implementation 'com.lowagie:itext:2.1.7'
  3. 重建您的项目,瞧瞧!一切都应该工作正常。 (不要忘记在编码时导入库 :D)

我希望它对我以外的人有所帮助!