以独立于平台的方式将环境变量传递到 JVM

我正在开发一个J2EE应用程序,它在Windows Vista机器上的JBoss中运行,但该应用程序最终将在Linux机器上运行。有没有办法以独立于平台的方式传递环境变量的值?

我认为(但我不确定)对平台敏感的方式是:

-Denv_var=%MY_ENV_VAR% (Windows)
-Denv_var=$MY_ENV_VAR (Linux)

从那里我将访问值(在Java中)使用

System.getProperty("MY_ENV_VAR");

——这是对的吗?

Javadoc似乎暗示该方法是依赖于平台的,但我不清楚这一点。我是否可以跳过将变量完全传递到 JVM 中,并在使用操作系统设置环境变量的值后使用?System.getenv(String name)getenv()


答案 1

System.getenv() 本身是独立于平台的。使用上面的例子,你肯定可以写

String value = System.getenv("MY_ENV_VAR")

它将在Linux和Windows上工作。没有理由将其包装到java系统属性中。也就是说,“依赖于平台”的部分在于不同的操作系统使用不同的环境变量,例如Windows上的PATH与Linux上的PATH。但是,只要您使用自己的变量并一致地命名它们(例如,始终是大写的),您就可以没问题。getenv()


答案 2

我如何解释java教程,getenv以独立于平台的方式工作,但你必须记住,变量在各个平台上的命名并不一致。由于您似乎自己设置了变量,因此这不适用于您。


推荐