使用getServletConfig获取文件名时出错

时间:2013-03-14 06:03:23

标签: java file servlets jasper-reports servletconfig

我在Java Web Application中使用JasperReport生成报告。

我有以下行来获取报告文件。

JasperReport report = (JasperReport) JRLoader.loadObject(getServletConfig().getServletContext().getRealPath("\rpts\report1.jasper"));

但是当我尝试使用上面一行时,我得到FileNotFoundException。但是当我尝试使用以下行时,程序执行成功。

JasperReport report = (JasperReport) JRLoader.loadObject(getServletConfig().getServletContext().getRealPath("//rpts//report1.jasper"));

所以,我想知道第一行的问题是什么?

提前致谢...

2 个答案:

答案 0 :(得分:1)

Java语言(和其他人)在\\中需要String(双反斜杠)以便读取单个\。你的第一种方式应该改为

JasperReport report = (JasperReport) JRLoader.loadObject(getServletConfig()
    .getServletContext().getRealPath("\\rpts\\report1.jasper"))

不过,最好使用/检查路径,或者使用File#separator更好地检查路径,如下所示:File.separator vs Slash in Paths

答案 1 :(得分:0)

您提供的路径应该是servlet路径。通常,servlet路径具有正斜杠/

请尝试/rpts/report1.jasper"