我正在尝试从项目目录中加载jasper报告,但是当我启动应用程序时,它会给我一个关于文件位置的错误,它说:
java.io.FileNotFoundException: C:\Program Files\Apache Software Foundation\apache-tomcat-7.0.50\bin\report.jasper
要获取文件路径,我使用:
new File("report.jasper").getAbsolutePath()
如果我在一个简单的类中运行它,它给了我正确的路径,但是当我运行应用程序时它给了我tomcat的路径,我尝试了一些其他函数,如getCanonicalPath
,getCanonicalFile
和getAbsoluteFile
;但它总是一样的结果。
是否有解决方案尊重这个?我的应用程序将在两个平台上运行:Windows和Linux,每次更新应用程序时,将报告的文件放在每个相应的tomcat路径中会很烦人,我试图不这样做。
提前致谢。
答案 0 :(得分:2)
如果您的文件位于Web应用程序根目录内,则应使用servlet上下文向其询问实际路径 as javadoc explains
另一种方法是使用getClassLoader()。getResourceAsStream(),但只有在不需要知道文件路径时才能使用它。
答案 1 :(得分:1)
您可以使用Class#getResource(String name)或ClassLoader#getResource(String name)方法返回URL对象,而不是使用Url#getPath()来获取路径。