在Java Web应用程序上使用JasperReports获取“文件未找到异常”

时间:2013-08-12 07:08:56

标签: java jasper-reports filenotfoundexception

我通过预先设计的Jrxml文件从My Java Web Application创建Jasper报告。该文件位于名为jrxml的目录中的My web文件夹(Netbeans)中,因此我尝试使用此方法获取它。

public void generateChurchReport(IncomeExpenseBean ieb) {
        church = ieb.getChurch();
        user = ieb.getUser();
        String currdate = dt.getCurrentDate();
        Connection conn = db.getDbConnection();
        Map parameters = new HashMap();
        try{ 
        parameters.put("ChurchName", church);
        JasperReport jasperReport = JasperCompileManager.compileReport("/jrxml/ChurchIncome_expenseReport.jrxml");
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn);
        File f = new File(user + church+ currdate +  ".pdf");
        JasperExportManager.exportReportToPdfFile(jasperPrint, f.getAbsolutePath());
        Desktop.getDesktop().open(new File(f.getAbsolutePath())); 
        }catch(Exception asd){
            System.out.println(asd.getMessage());
        }

    }

我收到文件未找到异常,因为应用程序希望文件在某处;

  C:\Program Files\glassfish-3.1.2.2\glassfish\domains\TestDom\jrxml\

如何在我的网络文件夹中阅读此文件?如何在同一文件夹中创建报告?

编辑如果我没有提供任何路径如果jrxml文件位于该位置,我的报告将在C:\ Program Files \ glassfish-3.1.2.2 \ glassfish \ domains \ TestDom \生成

1 个答案:

答案 0 :(得分:6)

你在这里做错了,你试图在你的java类的web文件夹中找到你的 jrxml 文件。由于上下文路径不正确,这肯定会在运行时引发“文件未找到错误”。您可以简单地执行以下操作: -

  1. 在java classes包下创建一个名为“Jrxml”的文件夹。假设java类包是 com.ejb.beans ,请创建一个文件夹 com.ejb.beans.jrxml
  2. 将所有 jrxml 文件放入此文件夹。
  3. 在您的java类中,加载类加载器并按名称找到 jrxml ,您将轻松访问它。这是代码: -

    ClassLoader classLoader = getClass().getClassLoader();

    InputStream url = null;

    url = classLoader.getResourceAsStream("Report.jrxml");

    此网址可用于将报告编译为: -

    JasperReport jasperReport = JasperCompileManager.compileReport(url);

  4. 要创建报告输出文件,可以将其存储在应用程序服务器的某个路径中。在环境变量中设置服务器路径,并在运行时在类中提取它,如下所示: -

    String serverHomeDir = System.getProperty("server.home.dir");

    String reportDestination = serverHomeDir + "/domains/ReportOutput/report.html";

    // now print report at reportDestination
    JasperExportManager.exportReportToHtmlFile(jasperPrint, reportDestination);
    

    您的html文件将在所需的目的地生成,您可以通过网页轻松阅读和呈现它。