如何从java中的Web服务获取属性文件的上下文路径?

如何从java中的Web服务获取属性文件的上下文路径?,java,web-services,file,contextpath,Java,Web Services,File,Contextpath,我正在尝试从应用程序读取属性文件的上下文路径 properties.load(this.getClass().getResourceAsStream(path)); import java.util.Properties; public class test1 { public String getValues() { PropertiesFileReader fileReader = new PropertiesFileReader();

我正在尝试从应用程序读取属性文件的上下文路径

properties.load(this.getClass().getResourceAsStream(path));



import java.util.Properties;

public class test1 {

    public String getValues()
    {
        PropertiesFileReader fileReader = new PropertiesFileReader();

        Properties prop = fileReader.getProp("/messages/AttachFile.properties");

        String out = prop.getProperty("FILE_NAME");

        return out;
    }
}
当属性文件位于
WEB-INF->classes->messages->myfile
但是当我把这个文件移到其他文件夹,比如
WEB-INF->messages->myfile
时,它似乎没有得到路径


编辑:我没有使用servlet…

您只需预先添加
/WEB-INF/

"/WEB-INF/messages/myfile";

If失败,因为新路径不是类路径的一部分,而
Class\getResourceAsStream()
从类路径加载资源。默认情况下,
/WEB-INF/classes
是Servlet API规范中指定的类路径的一部分,这就是它工作的原因。我建议将其保留在类路径中,或者将新路径
/WEB-INF/resources
添加到类路径中


如果您使用的是像Eclipse这样的IDE,那么可以通过将其作为源文件夹添加到项目的构建路径中来实现(这将在构建过程中将其移回
/WEB-INF/classes
)。或者,您也可以在Java源根目录中创建一个
resources
包,然后将文件放在那里。它也将成为类路径的一部分。

当你说你没有使用servlet时,你是什么意思?此代码如何运行?
基本上,当您使用servlet时,只有WEB-INF/classes和WEB-INF/lib在类路径上。因此,您无法使用类加载器访问资源。但是您可以使用ServletContext访问它们。因此,假设您的代码在Servlet/JSP中运行,您可以执行以下操作:

getServletContext().getResourceAsStream("your resource starting from web-application root");

我希望它没有servlet上下文,因为我没有使用servletswell,我建议您使用Maven和Maven资源插件Mebbe,这只是一个类路径问题。尝试在类路径中添加其他文件夹,并查看其alright@govi不,它不能让我到那里。。。有什么想法吗