为什么我的Java应用程序看不到* .jrxml?

我的项目有以下架构: 在此处输入图像描述

我的模板是“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

Jasper报告无法看到它,因为该文件是嵌入式资源(它不作为文件存在,而是作为Jar文件中的条目存在)

您需要使用getClass().getResource("/testjasper/report1.jrxml")来获取对它的引用,它将返回一个URL

从内存中,你应该可以使用Jasper一个InputStream ,这可以通过使用URL#openConnection来实现