为什么我在tomcat的独立实例中访问.properties文件时遇到问题,而在eclipse嵌入式实例中却没有?

时间:2010-08-07 18:30:27

标签: eclipse web-applications tomcat eclipse-wtp classloader

我在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”作为我的结果。

classpath / classloader配置有问题吗?权限?任何其他配置文件?我知道helloSettings.properties文件位于WEB-INF / classes文件夹中。

任何帮助?

1 个答案:

答案 0 :(得分: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

THE FIX

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()是我的问题,我不知道为什么。< / p>