java - 在 jar 文件中加载属性文件

标签 java

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

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

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

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

加载失败。任何帮助将不胜感激!

谢谢

最佳答案

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

关于java - 在 jar 文件中加载属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15711482/

相关文章:

java - 解析 Fragment 上的 XML 时出错

java - 在 OSX 窗口对话框中排除文件

java - 如何在一个文件中写入多个LinkLists并将LinkedLists读入LinkedList的ArrayList?

java - 对 jlist 的元素进行排序

java - Android 日历 API 与日历提供程序 API

javascript - 使用 GSON 将 JSON 转换为 Java 对象

java - 如何防止在 Spring 执行第二个查询?

java - 这段 Java XML 解析代码有什么问题?

java - 数组不应由数组初始化程序静态初始化。为什么?

java - 如何在我的 Android 项目中使用第二个 Java 类?