我正在尝试处理java程序,需要附加到jar的属性文件。因此,我做了jar程序,并解除它附加属性文件。我有一个类MyClass,它需要属性文件。因此,我基本上将属性文件放在与MyClass.class相同的文件夹中。然后我震惊了。
在我的MyClass.java中,我试图通过以下方式访问属性:
Properties prop = new Properties();
prop.load(MyClass.class.getClassLoader().getResourceAsStream("prop.properties"));
prop.properties与MyClass.class位于同一文件夹中。
无法加载它。任何帮助将不胜感激!
谢谢,
答案 0 :(得分:4)
ClassLoader.getResourceAsStream()
将路径视为相对于类路径的根,即它在类加载器的每个JAR或目录的根级别查找资源。
您可能需要Class.getResourceAsStream
,它将路径视为相对于相关类的包。您还需要确保在阅读后关闭流。
Properties prop = new Properties();
InputStream in = MyClass.class.getResourceAsStream("prop.properties");
try {
prop.load(in);
} finally {
in.close();
}
如果MyClass
位于包com.example
中,那么这将从JAR加载com/example/prop.properties
。