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

时间:2015-06-20 03:00:10

标签: java jasper-reports

我遇到了问题,我使用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);
}

3 个答案:

答案 0 :(得分:1)

添加要加载到类路径的jrxml文件。使用compile mananger编译报告并保存到绝对位置。更好地使用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);

答案 1 :(得分:0)

我已经解决了这个问题,关于iReport / jasper报告在执行可执行文件时没有打开/运行。

似乎程序(可执行文件)找不到.jrxml / .jasper文件在其默认位置(通常使用build和manifest文件在项目文件夹中),所以替代方法是将报告文件保存在硬盘中的某个位置磁盘。恩。 “D:/ Files and Documents / Documents / report1.jrxml”

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

无论如何它都有效。 :)

答案 2 :(得分:0)

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