【发布时间】: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