将属性文件放在 Eclipse 项目中的位置

Posted

技术标签:

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

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

谢谢。

编辑:

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

【问题讨论】:

这是一种方式。关键是:您的代码如何访问它?你不能使用 FileInputStream;您需要使用 getResourceAsStream() 使用类加载器从类路径中获取它。 如果您想稍后轻松编辑它,您需要将文件放在 jar 之外。 【参考方案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:感谢您的建议,我将更改示例

以上是关于将属性文件放在 Eclipse 项目中的位置的主要内容,如果未能解决你的问题,请参考以下文章

将自己的属性文件放在用Android Studio创建的android项目中的哪里?

将 sqlite-jdbc-3.7.2.jar 放在 Eclipse 中的哪个位置以使其工作?

怎样将一个文件夹导入eclipse

本人初学Java,我用eclipse编写的代码文件保存位置在哪里?

Eclipse 更改项目文件位置

将“资产”文件夹放在 Android Studio 中的啥位置?