我正在开发一个在 Windows Vista 机器上的 JBoss 中运行的 J2EE 应用程序,但该应用程序最终会在 Linux 机器上运行。有没有办法以独立于平台的方式传入环境变量的值?
我认为(但我不确定)平台敏感的方式是:
-Denv_var=%MY_ENV_VAR% (Windows)
-Denv_var=$MY_ENV_VAR (Linux)
然后我将使用
访问该值(在 Java 中)System.getProperty("MY_ENV_VAR");
——对吗?
System.getenv(String name)
的 Javadoc 似乎暗示该方法依赖于平台,但我并不清楚。我可以完全跳过将变量传递到 JVM,并在使用操作系统设置环境变量的值后使用 getenv()
吗?
最佳答案
System.getenv()本身是平台无关的。使用你上面的例子,你肯定可以写
String value = System.getenv("MY_ENV_VAR")
它可以在 Linux 和 Windows 上运行。没有理由将其包装到 java 系统属性中。也就是说,getenv()
的“平台相关”部分在于不同的操作系统使用不同的环境变量,例如 Windows 上的 PATH 与 Linux 上的路径。但只要您使用自己的变量并一致地命名它们(例如,总是大写),就可以了。
关于java - 以独立于平台的方式将环境变量传递给 JVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1462069/