0

我在 Eclipse 中编写了一个简单的 Hello World Servlet,在我的 HelloWorldServlet.java 的 doGet 方法中包含以下内容


PrintWriter writer = response.getWriter();
String hello = PropertyLoader.bundle.getProperty("hello");
writer.append(hello);
writer.flush();

PropertyLoader 是与 Servlet 位于同一包中的一个简单类,它执行以下操作:


public class PropertyLoader {
    public static final Properties bundle = new Properties();

    static {
        InputStream stream = null;
        URL url = PropertyLoader.class.getResource("/helloSettings.properties");
        stream = new FileInputStream(url.getFile());
        bundle.load(stream);         
    }
}//End of class

我在 /WebContent/WEB-IND/classes 中放置了一个名为 helloSettings.properties 的文件,其中包含以下单行内容:

hello=Hello Settings World

当我将 Tomcat 6.0 添加到我的项目并在 Eclipse 中运行它时,它会成功打印

“Hello Settings World”到网络浏览器。

但是,当我将项目导出为 war 文件并手动将其放置在 .../Tomcat 6.0/webapps 中时,我的结果是“null”。

类路径/类加载器配置有问题吗?权限?任何其他配置文件?我知道 helloSettings.properties 文件位于 WEB-INF/classes 文件夹中。

有什么帮助吗?

4

1 回答 1

0

好吧,经过大量浏览后,我发现为什么要做我想做的事情似乎是“正常的”:

而不是......(我是怎么做的)

public class PropertyLoader { 

    public static final Properties bundle = new Properties();

    static { 

        InputStream stream = null; 
        URL url = PropertyLoader.class.getResource("/helloSettings.properties"); 
        stream = new FileInputStream(url.getFile()); 
        bundle.load(stream);

    } 

}//End of class

修复

public class PropertyLoader { 

    public static final Properties bundle = new Properties();

    static { 

        InputStream stream = null;
        stream = SBOConstants.class.getResourceAsStream("/sbonline.properties");
        bundle.load(stream);

    } 

}//End of class

我正在修改别人的代码,所以我不确定他们为什么首先以另一种方式这样做......但我想url.getFile()是我的问题,我不知道为什么。

于 2010-08-08T23:27:57.613 回答