如何在 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 文件夹即可正常工作
我有一个问题,我使用 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 文件夹即可正常工作