在jar文件中加载属性文件

时间:2013-03-29 21:12:10

标签: java

我正在尝试处理java程序,需要附加到jar的属性文件。因此,我做了jar程序,并解除它附加属性文件。我有一个类MyClass,它需要属性文件。因此,我基本上将属性文件放在与MyClass.class相同的文件夹中。然后我震惊了。

在我的MyClass.java中,我试图通过以下方式访问属性:

Properties prop = new Properties();
prop.load(MyClass.class.getClassLoader().getResourceAsStream("prop.properties"));

prop.properties与MyClass.class位于同一文件夹中。

无法加载它。任何帮助将不胜感激!

谢谢,

1 个答案:

答案 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