2009-10-27 66 views
0

我试图在第三方应用程序中绑定到我们的项目,但发现其属性文件的unix路径已被硬编码分成几类。对它们的设置进行微小的改变可能是可能的,所以我的问题是:什么是可能的(最快的)方法来实现这一点?第三方应用程序既不使用ant也不使用spring,而只使用构建脚本将代码编译为从命令行调用的.jar。在java应用程序中为属性文件提取硬编码路径名的可能方法

+0

宁可开箱即用,但可以创建符号链接来模仿您的unix安装程序上的硬编码路径吗? – Rahul 2009-10-27 08:33:41

+0

我不知道,但我怀疑这可以在Windows上工作,因为共享文件夹的形式为// path/goes/here,即带有双斜杠。布我可能是错的那里... – davek 2009-10-27 08:35:42

回答

3

您可以将属性文件作为资源读取。然后你只需要把包含这些文件的目录放到你的classpath中。

1

你实际上并没有说你想达到什么。你的应用程序是否会确定一些路径并通过API将它们传递给第三方应用程序?你的环境中的东西(例如命令行参数)是否指定了文件的位置?

我会先重构他们的代码,以便我确定地知道任何硬编码的字符串都保存在一个定义的位置。所以,举例来说,如果他们有

readProperties("/usr/thing/propertyFileXxx.txt"); 

static final String PROPERTY_XXX = "/usr/thing/propertyFileXxx.txt"; 
readProperties(PROPERTY_XXX); 

我首先整合到一个单一的存取的性能

readProperties(PROPERTY_XXX_ENUM); 

所以现在我们有一个明确的单件确定从何处获取每种类型属性的代码以及特定类型的特定列表。

然后,我们需要一些可控制的方式来定义在运行时使用的属性文件集合。我已经使用@tangens建议的方法来加载属性作为来自添加到类路径的特定目录的资源。