使用getServletConfig获取文件名时出错

我在Java Web应用程序中使用JasperReport生成报告。

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

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

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

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

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

提前致谢…

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

请试试这个/rpts/report1.jasper"

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

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

尽管如此,使用File#separator更好地检查路径,如下所示: File.separator vs Paths中的Slash