在Java Web应用程序上使用JasperReports获取“找不到文件异常”
我正在通过预先设计的Jrxml文件从My Java Web
Application创建Jasper报告。该文件位于名为jrxml的目录中的我的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\
如何在Web文件夹中读取此文件,以及如何在同一文件夹内创建报告?
如果我不提供任何路径,如果jrxml文件位于该位置,则在C:\ Program Files \ glassfish-3.1.2.2 \
glassfish \ domains \ TestDom \处生成我的报告。
回答:
您在这里做错的是,您正在尝试从Java类在Web文件夹中的某个位置找到
文件。由于不正确的上下文路径,这肯定会在运行时引发“找不到文件错误”。您可以简单地执行以下操作:
- 在您的Java类包下创建一个名为“ Jrxml”的文件夹。假设Java类包是 ,请创建一个文件夹 。
- 将所有 文件放入此文件夹。
- 在您的Java类中,加载 并通过其名称找到 ,您将可以轻松访问它。这是代码:-
ClassLoader classLoader = getClass().getClassLoader();
InputStream url = null;
url = classLoader.getResourceAsStream("Report.jrxml");
该网址可用于将报告编译为:-
JasperReport jasperReport = JasperCompileManager.compileReport(url);
要创建报告输出文件,可以将其存储在应用程序服务器中的某个路径。在环境变量中设置服务器路径,并在运行时将其提取到类中:
String serverHomeDir = System.getProperty("server.home.dir");
String reportDestination = serverHomeDir +
"/domains/ReportOutput/report.html";
// now print report at reportDestinationJasperExportManager.exportReportToHtmlFile(jasperPrint, reportDestination);
您的html文件将在所需的目标位置生成,您可以轻松地通过您的网页以所需的方式阅读和呈现该文件。
以上是 在Java Web应用程序上使用JasperReports获取“找不到文件异常” 的全部内容, 来源链接: utcz.com/qa/413900.html