获取文件路径不是apache tomcat路径

时间:2014-02-13 16:43:04

标签: java apache file tomcat jasper-reports

我正在尝试从项目目录中加载jasper报告,但是当我启动应用程序时,它会给我一个关于文件位置的错误,它说:

java.io.FileNotFoundException: C:\Program Files\Apache Software Foundation\apache-tomcat-7.0.50\bin\report.jasper

要获取文件路径,我使用:

new File("report.jasper").getAbsolutePath()

如果我在一个简单的类中运行它,它给了我正确的路径,但是当我运行应用程序时它给了我tomcat的路径,我尝试了一些其他函数,如getCanonicalPathgetCanonicalFilegetAbsoluteFile;但它总是一样的结果。

是否有解决方案尊重这个?我的应用程序将在两个平台上运行:Windows和Linux,每次更新应用程序时,将报告的文件放在每个相应的tomcat路径中会很烦人,我试图不这样做。

提前致谢。

2 个答案:

答案 0 :(得分:2)

如果您的文件位于Web应用程序根目录内,则应使用servlet上下文向其询问实际路径 as javadoc explains

另一种方法是使用getClassLoader()。getResourceAsStream(),但只有在不需要知道文件路径时才能使用它。

答案 1 :(得分:1)

您可以使用Class#getResource(String name)或ClassLoader#getResource(String name)方法返回URL对象,而不是使用Url#getPath()来获取路径。