0

我正在尝试使用需要附加到 jar 的属性文件的 java 程序。因此,我确实 jar 程序,并解压缩它以附加属性文件。我有一个类 MyClass,它需要属性文件。因此,我基本上将属性文件放在与 MyClass.class 相同的文件夹中。然后我把它震了回去。

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

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

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

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

谢谢,

4

1 回答 1

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则将com/example/prop.properties从 JAR 加载。

于 2013-03-29T21:17:16.827 回答