我有一个问题,我用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);
}发布于 2015-09-27 07:12:39
添加要加载到类路径的jrxml文件。使用编译管理器编译报表并保存到绝对位置。最好使用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);发布于 2015-06-25 02:29:26
我已经解决了关于iReport/jasper报告在生成可执行文件时不打开/运行的问题。
程序(可执行文件)似乎无法将..jrxml/..jasper文件定位在其默认位置(通常是在项目文件夹中,通常带有构建和清单文件),因此可以选择将报表文件保存在硬盘的某个位置。例如。"D:/Files和Documents/Documents/report1.jrxml“
这是可行的,但不知何故不是正确的方法。大多数程序员都希望使用相对路径来完成这一任务。如果您链接到的文件位于同一个目录中。然而,我不明白为什么它不能在一个可执行文件上工作。所以我决定使用一条绝对路径,如果我决定在另一台计算机上使用它,这将是一个问题。
不管怎么说它起作用了。:)
发布于 2016-10-16 06:43:53
只需将您的.jrxml文件复制到dist文件夹,它将正常工作
https://stackoverflow.com/questions/30949828
复制相似问题