ipk*_*iss 1 java servlets properties
我试图在我的java Web应用程序中读取属性文件.我试过这些解决方案:
在基于servlet的应用程序中放置位置以及如何读取配置资源文件?
但它们都不适合我.
这是我的应用程序的结构:

读取属性文件的代码放在A类中,即使我放置绝对路径它也不起作用.A是普通的Java类.但是如果读取属性代码放在servlet类中(ProcessRequest.java),一切都像魅力一样
这是我用过的代码:
public class A {
    public A() {
        try {
            Properties p = new Properties();
            p.load(this.getClass().getClassLoader().getResourceAsStream("/a.properties"));
            String n = p.getProperty("name");
            System.out.println("name: " + n);
        } catch (Exception ex) {
            Logger.getLogger(A.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
任何的想法?
你把它放在servlets包中,但是你试图从类路径根目录中获取它.前导/使得路径相对于类路径根.
相应地修复路径:
p.load(this.getClass().getClassLoader().getResourceAsStream("/servlets/a.properties"));
或者,假设当前类已经在servlets包中:
p.load(this.getClass().getClassLoader().getResourceAsStream("a.properties"));
与具体问题无关,稍后可能会将WAR外部的属性文件移动到外部位置,这样可以轻松编辑文件而无需每次都重建/重新部署,然后我建议使用线程的上下文类加载器而不是当前类的类加载器.它适用于所有情况:
p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("servlets/a.properties"));
(注意路径不需要从/这里开始,因为它总是相对于类路径根)
| 归档时间: | 
 | 
| 查看次数: | 7394 次 | 
| 最近记录: |