使用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