【问题标题】:Access .properties file at same level as working directory访问与工作目录相同级别的 .properties 文件
【发布时间】:2009-06-10 15:57:04
【问题描述】:

我正在处理一个 Java 项目,我想以 .jar 文件的形式交付给我的客户。但是,我想让客户端能够更改程序的参数,而无需重新编译或重新创建 .jar。基本上,我希望能够从 .jar 中的类加载 .properties 文件,但将这些 .properties 文件定位在 .jar 之外,甚至在工作目录之外。

我一直在 Eclipse 中测试我的尝试,这可能会导致一些问题,但我目前不知道如何。我的设置如下。我有一个项目,其中包含一些我从中构建 .jar 文件的类。我有一个 .properties 文件,用于在创建 .jar 的类时创建 ResourceBundle。我指定在 .jar 清单中的 .jar 类路径中包含一个附加目录“conf/”。

一旦 .jar 文件被构建,它就会被复制到我用于测试的另一个项目的 lib/ 目录中。此测试项目在 Java 构建路径中包含 .jar 文件作为库(“Add External Jars..”)。 .properties 文件位于与 lib/、src/ 和 bin/ 处于同一级别的 conf/ 目录,但我无法在那里访问它。我能够让它工作的唯一方法是将 conf/ 定位在 src/ (和 bin/ )下,但我希望能够使用它上一层。这可能吗?

这是 .jar 清单文件中的条目...

Class-Path: ../conf/

这是我尝试过的 ResourceBundle 调用(没用)...

rb = ResourceBundle.getBundle("..conf.BaseProject");

这是现在有效的目录结构(名称已更改以保护无辜者)...

/项目 /项目/bin /项目/bin/conf /Project/bin/conf/BaseProject.properties /Project/bin/TestClass.class /项目/库 /Project/lib/BaseProject.jar

这是我想要的目录布局(同样,文件名并不重要)...

/项目 /项目/bin /Project/bin/TestClass.class /项目/conf /Project/conf/BaseProject.properties /项目/库 /Project/lib/BaseProject.jar

【问题讨论】:

  • 你试过简单的getBundle("BaseProject")吗?
  • 是的,我确实尝试过只使用“BaseProject”,当 conf/ 位于 bin/ 目录中时,这种方式确实有效

标签: java properties jar


【解决方案1】:

你可以得到它using the Classloader

【讨论】:

    【解决方案2】:

    我喜欢Spring的ClassPathResource

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-08
      • 2010-12-29
      • 1970-01-01
      • 2021-08-03
      相关资源
      最近更新 更多