模拟Java的app.config?

时间:2009-04-09 17:25:30

标签: java configuration properties

我知道您可以使用java.util.Properties来读取Java属性文件。

请参阅:Java equivalent to app.config?

这个档案有标准的位置吗?在.NET中,我们将application.exe.config放在与application.exe相同的目录中。该应用程序默认在此处查找。

可以让Java在类路径中查找属性文件,但我很难理解要使用的文件名/路径结构以及如何使用标准.properties格式或XML格式文件。

假设我在org_example_api.jar中打包了一个API(根包是org.example.api)。我不想将属性文件放在jar中,因为它应该由用户编辑。我希望用户能够将所需的配置属性放在相对于类路径的某个地方的.properties或.xml文件中,这样我就可以找到它而无需了解有关ir文件系统结构的任何信息。

这适用于所有系统:

/classpath/org_example_api.jar
/classpath/org/example/api/config.properties OR
/classpath/org/example/api/config.xml

代码:

java.util.Properties = ? //NEED SOME HELP HERE

3 个答案:

答案 0 :(得分:2)

这完全取决于您正在开发的应用程序类型。

1)如果是Web应用程序,最好的位置是在WEB-INF / classes /文件夹中。

2)如果您正在开发独立应用程序,则有许多方法。从您的示例中我认为以下结构将起作用。

/<dist>/org_example_api.jar
/<dist>/config.xml
/<dist>/run.sh

在run.sh中,您可以在类路径中启动提供当前目录的java应用程序。这样的事情。

java -cp。:org_example_api.jar ClassToExecute

3)如果是API发行版,则由最终用户决定。您可以告诉用户他们可以在类路径中提供config.xml,该路径应遵循一些预定义的结构。在这种情况下,您可以查看Log4J作为示例。

答案 1 :(得分:1)

这里的世界对你敞开大门。唯一最好的做法是最适合你的:

  1. 无论用户运行什么程序,都需要将属性文件的路径作为参数
  2. 您的应用程序可以配置为查看config.properties
  3. 的当前目录
  4. 如果找不到该文件,您可以回退到user.home目录,或者回退到安装应用程序的任何位置。
  5. 就个人而言,我通常让我的应用程序尝试从类路径中读取属性文件 - 但我不是在最终用户更新/更改文件的世界。

    无论您选择哪种方式,只需确保为用户清楚地记录,以便他们知道要编辑的文件以及需要的位置!

答案 2 :(得分:1)

您可以将属性文件放在CLASSPATH中的目录或JAR中,然后使用

InputStream is = getClass().getResourceAsStream("/path/goes/here");
Properties props = new Properties();
props.load(is);

(我注意到你在OP中提到了这一点,但其他人可能会发现代码很有用。)