访问.properties文件与工作目录处于同一级别

时间:2009-06-10 15:57:05

标签: java properties jar

我正在开发一个Java项目,我希望将其作为.jar文件提供给我的客户端。但是,我想允许客户端能够更改程序的参数,而无需重新编译或重新创建.jar。基本上,我希望能够从.jar中的类加载.properties文件,但是在.jar之外,甚至在工作目录之外找到那些.properties文件。

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

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

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

Class-Path: ../conf/

这是我尝试过的ResourceBundle调用(不起作用)......

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

这是现在可以使用的目录结构(名称已被更改以保护无辜者)......

/Project
/Project/bin
/Project/bin/conf
/Project/bin/conf/BaseProject.properties
/Project/bin/TestClass.class
/Project/lib
/Project/lib/BaseProject.jar

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

/Project
/Project/bin
/Project/bin/TestClass.class
/Project/conf
/Project/conf/BaseProject.properties
/Project/lib
/Project/lib/BaseProject.jar

2 个答案:

答案 0 :(得分:2)

你可以得到它using the Classloader

答案 1 :(得分:1)

我喜欢Spring的ClassPathResource