3

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

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...

4

3 回答 3

2

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

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

于 2011-03-12T14:19:45.530 回答
0

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

getServletContext().getResourceAsStream("your resource starting from web-application root");
于 2011-03-12T18:23:20.017 回答
0

你只需要预先准备/WEB-INF/

"/WEB-INF/messages/myfile";
于 2011-03-12T13:23:34.363 回答