首页 > 解决方案 > 在不启动 Eclipse 的情况下访问属性/环境变量?

问题描述

我想设置可跨其他类文件使用的 log4j 配置文件路径/其他文件夹路径,而不对文件夹路径进行硬编码。

现在,我已将变量设置为环境变量。但只有在我启动 Eclipse 时才能对其进行修改。我如何设置这个变量,使任何人(不想启动 Eclipse)都可以从外部修改它。此外,它将用于测试配置。因此,最好不要对其进行硬编码,并使所有文件路径等易于重构。

final static String log4jpath = System.getenv("LOG4J_PATH");

标签: javaeclipsevariableslog4jenvironment-variables

解决方案


转述评论

[如何从 Java 程序之外获取价值,例如包含所有其他文件路径的单独文件?

这称为配置文件

它通常是一个属性文件,类似于 Log4j 配置文件,但它可以是任何类型的文件,例如 XML、JSON、YAML...

要识别单个此类文件,您可以使用:

  • 一个环境变量(就像你现在一样)
  • 系统属性(更常见)
  • 当前目录中特定命名的文件
  • ...

该文件中的条目将识别您真正想要的所有值。

例如,Spring 是一个填充 Java 框架,它将在许多地方查找配置。请参阅24. 外部化配置以获取完整详细信息,但这里是最常见配置的摘要:

    1. 命令行参数,例如java -jar MyApp.jar --foo=bar
    1. Java 系统属性,例如使用-Dfoo=bar命令行设置
    1. 操作系统环境变量,例如SET foo=bar(Windows) 或export foo=bar(Linux)
    1. 打包 jar 之外的应用程序属性,即相对于当前目录。
      名称和位置可以在命令行上覆盖。
      • config/application.properties
      • config/application.yaml
      • application.properties
      • application.yaml

推荐阅读