【问题标题】:where to put the properties file in an eclipse project将属性文件放在 Eclipse 项目中的位置
【发布时间】:2012-07-24 06:49:03
【问题描述】:

请告诉我我的 .properties 文件到底放在我的 Eclipse 项目中的什么位置。我要为它创建一个单独的文件夹吗? 我想把它放在这样一种方式,我将能够轻松地以 JAR 形式分发我的项目。

谢谢。

编辑:

我想以这样一种方式放置属性文件,以便以后在任何操作系统上都可以轻松地对其进行编辑。

【问题讨论】:

  • 这是一种方式。关键是:您的代码如何访问它?你不能使用 FileInputStream;您需要使用 getResourceAsStream() 使用类加载器从类路径中获取它。
  • 如果您想稍后轻松编辑它,您需要将文件放在 jar 之外。

标签: java eclipse properties-file


【解决方案1】:

src/main/resource 将是一个理想的选择。

【讨论】:

    【解决方案2】:

    我使用的方法是为了能够轻松更改配置而无需重新部署

    你项目根目录中的一个版本的属性文件(带有默认值),我总是把它放在应用程序包中(foo.bar.myapp)。我使用getResourceAsStream("/foo/bar/myapp/config.properties") 或类似示例加载默认的类包。

    另外我准备了一个系统属性:

    String configFileLocation = System.getProperty("config");
    

    只需使用从作为属性传递的配置文件中读取的属性覆盖默认值。

    例如:

    Properties props = new Properties();
    props.load(Main.class.getResourceAsStream("mydefault.properties"));
    
    System.out.println("default loaded: " + props);
    
    String configFile = System.getProperty("config");
    if (configFile != null) {
        props.load(new FileInputStream(configFile));
        System.out.println("custom config loaded from " + configFile);
    }
    
    System.out.println("custom override: " + props);
    

    这将首先加载存储在您的项目下的名为mydefault.properties 的包中的资源foo.bar,然后如果配置了系统属性config,它将加载使用引用路径覆盖加载的属性。

    可以使用-D 参数设置系统属性,在这种情况下类似于:java -Dconfig=/home/user/custom.properties foo.bar.Main。或者,如果您在 Web 应用程序中(例如 Tomcat),您可以使用 CATALINA_OPTS 设置此属性。

    【讨论】:

    • 恕我直言,将包名称硬编码为字符串中的字符串不是一个好主意。最好使用带有简单(非限定)名称的类的 getResourceAsStream ,它会自动添加包路径!当然所有恕我直言 - HTH
    • @davidfrancis:感谢您的建议,我将更改示例
    猜你喜欢
    • 1970-01-01
    • 2015-08-13
    • 2018-11-15
    • 2011-09-09
    • 1970-01-01
    • 2012-08-10
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多