运行jar时覆盖属性文件

时间:2017-05-15 14:03:56

标签: java jar properties-file

我正在尝试从我一直在处理的包中创建一个.JAR并遇到问题。我希望用户能够修改运行程序的属性。

我的包的文件夹结构如下所示:

├───src
│   ├───main
│   │   ├───java
(...)
│   │   └───resources
│   │           dbinterface.properties

我想覆盖dbinterface.properties文件,用户将该文件放在与jar相同的文件夹中(或放在./config文件夹旁边)。

我尝试将.添加到MANIFEST.MF中的类路径中,但不幸的是,这不起作用。

2 个答案:

答案 0 :(得分:2)

我会在属性文件读取方法中实现这样的行为。您可以首先尝试在用户可以创建的位置读取属性文件,如果找不到则回退到原始默认文件。类似的东西:

BroadcastReceiver

答案 1 :(得分:1)

存储用户可编辑属性的最佳位置是 users home dir 。在Java中,我们通过System.getProperty("user.home")对用户家庭进行系统独立访问。这指向Linux上的/home/$USER和Windows上的%USERPROFILE%。所有其他操作系统也受支持。

  

您可以首先尝试在用户可以创建的位置读取属性文件,如果找不到,则可以回退到原始默认文件。 - Galcoholic

     
    

我想避免这种情况。 - 帕德里诺

  

为什么?

这是最好的方法:

  • 首先阅读您使用程序删除的属性文件
  • 然后(尝试)阅读用户从new File(System.getProperty("user.home"),".myProgram/dbinterface.properties")更改的设置 (这基本上是由@Galcoholic建议的另一种方式)

当使用JVM中的Properties类加载它们时,设置将自动合并。