如何在 java 的可执行文件中加载 Jasper Report?

How can I load Jasper Report in executable in java?

我有一个问题,我使用 iReport 为我的库存系统制作报告。一切似乎都工作正常,直到我在构建可执行文件后对其进行测试。当我按下按钮时没有任何反应。

这是我的按钮的代码。

当我 运行 netbeans 上的文件但不在可执行文件中时,会出现该报告。可能是什么导致了问题。

try {
    try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
    }
    String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + Connect.URL();
    conn = DriverManager.getConnection(url);
    Statement stmt = conn.createStatement();
    JasperDesign jasperDesign = JRXmlLoader.load("report1.jrxml");
    String sql = "select * from Incoming";
    JRDesignQuery newQuery = new JRDesignQuery();
    newQuery.setText(sql);
    jasperDesign.setQuery(newQuery);
    JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, conn);
    JasperViewer.viewReport(jasperPrint);

} catch (SQLException | JRException ex) {
    Logger.getLogger(Inventory_ReportFrm.class.getName()).log(Level.SEVERE, null, ex);
}

我已经解决了这个问题iReport/jasper report not opening/running upon make an executable.

似乎程序(可执行文件)无法在其默认位置找到 .jrxml/.jasper 文件(在通常包含构建和清单文件的项目文件夹中),因此替代方法是将报告文件保存在硬盘。前任。 "D:/Files and Documents/Documents/report1.jrxml"

这可行,但不知何故不是正确的方法。 大多数程序员会希望使用相对路径来执行此操作。如果您链接到的文件位于同一目录中。但是我无法弄清楚为什么它不适用于可执行文件。所以我决定使用绝对路径,如果我决定在另一台计算机上使用它,那将是一个问题。

总之它有效。 :)

将要加载的 jrxml 文件添加到 class 路径。使用编译管理器编译报告并保存到绝对位置。最好使用C文件作为绝对位置。

String documents=newJFileChooser().getFileSystemView().getDefaultDirectory().toString();

JasperCompileManager.compileReportToFile(jasperDesign,documents+"\report1.jasper");

JasperPrint jasperPrint = JasperFillManager.fillReport(documents+"\report1.jasper, null, conn);

JasperViewer.viewReport(jasperPrint,false);

只需将您的 .jrxml 文件复制到 dist 文件夹即可正常工作