为什么我的Java应用程序无法看到*的.jrxml?(Why My Java Application

2019-07-03 12:32发布

我的项目有以下结构:

我的模板是“report1.jrxml”,然后当我EXCUTE这样的代码:

  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

Answer 1:

Jasper报表看不到它,因为该文件是嵌入的资源(它不存在的文件,但在JAR文件中的条目)

你需要通过使用来获得对它的引用getClass().getResource("/testjasper/report1.jrxml")将返回一个URL

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



文章来源: Why My Java Application can't see the *.jrxml?