属性文件在jar内部无效

时间:2010-10-06 15:32:18

标签: java properties

当我尝试将独立Java应用程序设置为可运行的jar时,我遇到了属性文件的问题。 我有2个属性文件,具体取决于运行它的机器初始化。 里面的日食它工作正常。我正在使用:

Properties configProps = new Properties();
....
if(machine1)
....
configProps.load(Config.class.getResourceAsStream("machine1.properties"));
else
configProps.load(Config.class.getResourceAsStream("machine2.properties"));

它作为Config.java工作,属性在同一个包中。 最重要的是,我有log4j属性位于项目的根目录。 那也是我用Jar制作的。

如何处理当前的sutuation.I知道在jar外面放置属性文件是个好主意。 我该如何做到这一点。

请帮忙。

2 个答案:

答案 0 :(得分:1)

如果需要写入该属性文件(用于配置),将属性文件放在jar外部是个好主意。鉴于您的命名,我认为它是用于配置。

对于只读,如果属性文件正确地打包在Jar中,则您的方法很好。是吗?您是否使用jar tf MyJar.jar达到了内容的最高点?它是否以正确的路径显示您的属性文件?

存储配置文件的位置是一个更广泛的问题。这是一篇很好的SO文章,它检查了它的一些方面(即 放置它):What is the proper way to store app's conf data in Java?

在我看来,你想选择一个位置(见上文)。完成后,第一次运行应用程序时,您应该在尝试时从Jar文件加载默认属性,然后立即将它们保存到您选择的位置。然后,然后,读取并写入该位置。您需要使用FileInputStream / FileOutputStream。

答案 1 :(得分:0)

尝试在适当的类路径设置的JAR的META-INF中添加清单。