2014-05-15 64 views
0

我想在Eclipse中的动态Web项目中使用相对路径。我没有在Servlet中使用它们,而是在Servlet调用的另一个类中使用它们。我试图访问该文件是位于Eclipse中相对路径的问题。

MyProject/WebContent/WEB-INF/propertyFile.properties

属性文件我已经试过几乎所有的相对路径...

WebContent/WEB-INF/propertyFile.properties 
/WebContent/WEB-INF/propertyFile.properties 
./WebContent/WEB-INF/propertyFile.properties 
MyProject/WebContent/WEB-INF/propertyFile.properties 
/MyProject/WebContent/WEB-INF/propertyFile.properties 
WEB-INF/propertyFile.properties 
/WEB-INF/propertyFile.properties 
./WEB-INF/propertyFile.properties 

...等等...什么我可不可以做?

在此先感谢!

+0

我使用JBoss发布的Web应用程序(我忘了评论)。 – user3640525

回答

2

你的东东明白,文件IO读取文件,从文件系统,相对于从该JVM(即Web容器)启动的目录。

请记住,一旦您的应用程序部署到生产环境中,将不会有任何MyProject或WebContent文件夹。这就是你的开发机器上存在的东西。生产中唯一会存在的是部署在应用程序服务器中的war文件。

实际上您想要加载位于已部署的Web应用程序(即位于war文件内部)的资源。

要做到这一点,你必须使用ServletContext.getResourceAsStream()

InputStream in = servletContext.getResourceAsStream("/WEB-INF/propertyFile.properties"); 
+0

感谢您的建议,但正如我所说我不在Servlet中使用这些文件,所以我不能使用ServletContext。 – user3640525

+0

您只需将servlet上下文从servlet传递到对象 –

+0

好的,我会这样做的。谢谢。 – user3640525