我的项目具有以下架构:
我的模板是“report1.jrxml”,然后当我执行此代码时:
TableModel model = (TableModel) masterTable.getModel();
JRTableModelDataSource data = new JRTableModelDataSource(model);
String reportSource ="report1.jrxml";
try {
JasperReport jr = JasperCompileManager.compileReport(reportSource);
JasperPrint jp = JasperFillManager.fillReport(jr, null,data);
} catch (JRException ex)
{
Logger.getLogger(master.class.getName()).log(Level.SEVERE, null, ex);
}
我收到了这个错误(我很抱歉使用法语,但这是可以理解的:p):
Grave: null
net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: report1.jrxml (Le fichier spécifié est introuvable)
at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:176)
at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:156)
at net.sf.jasperreports.engine.JasperCompileManager.compile(JasperCompileManager.java:171)
at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:448)
at testjasper.master.jButton1ActionPerformed(master.java:319)
at testjasper.master.access$900(master.java:25)
at testjasper.master$FormListener.actionPerformed(master.java:259)
Netbeans说无法找到该文件,但正如您在屏幕截图中看到的那样,它存在吗? 我怎么解决这个问题” ? 相反,问题是什么? 致以我的问候。 :P
答案 0 :(得分:2)
Jasper报告无法看到它,因为该文件是嵌入式资源(它不作为文件存在,而是作为Jar文件中的条目存在)
您需要使用getClass().getResource("/testjasper/report1.jrxml")
获取对URL
的引用。
从记忆中,你应该可以使用InputStream
成为贾斯珀,这可以通过使用URL#openConnection