将属性文件放在 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 中的哪个位置以使其工作?