2011-12-26 68 views

回答

1

这取决于你如何加载你的属性文件。 考虑的帮助下加载您的属性:

InputStream in = getClass().getResourceAsStream("/log4j.properties"); 

,然后用Properties.load(中)

这应该处理这种情况时,属性文件在物理上位于罐子 祝您好运!

+0

谢谢,但我得到了关于'getclass()'函数的错误: 非静态方法getClass()不能从静态上下文中引用 – zeevblu 2011-12-26 09:13:53

+0

你的错误是什么,如果你不是在静态方法中。 – 2011-12-26 09:14:56

+0

如果你在主要方法(这是静态的)内,并且你的类名为MyClass(例如),请尝试这种方式:MyClass.class.getResourceAsStream(...) – 2011-12-26 09:16:43

1

当您将jar文件中的属性打包时,必须使用类加载器来定位文件,因为它不再是可见作为文件。

如果属性文件是内部人在根的jar文件的的jar文件,然后上面给出的答案是,你会用什么:

Properties p = new Properties(); 
InputStream is = MyClass.class.getResourceAsStream("/config.properities"); 
if(is != null) 
{ 
    p.load(is); 
} 

应该返回,你可以传递给一个InputStream要加载的Properities类。如果该调用返回NULL,则需要查看属性文件相对于jar文件的根的的位置。