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

标签 java jvm environment-variables platform-independence

我正在开发一个在 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/

相关文章:

java - java和javaw的区别

java - JDK 8 中带有压缩参数的 GC 日志轮换

git - Docker 将变量传递给运行 git clone 的 shell 脚本

java - Android GingerBread 及之前的日历 View (API<11)

java - 这个整数堆栈的 Java 链表表示有什么问题?

java - 自由配置文件 : binding JNDI values programmatically

java - Eclipse - 执行命令行时发生异常,没有这样的文件或目录

Java 泛型和 JNI

debugging - 关闭调试堆有哪些负面后果? (_NO_DEBUG_HEAP==1)

javascript - 没有 .env 文件时如何使用 dotEnv?