I'm developing a J2EE application that runs in JBoss on a Windows Vista machine, but the application will end up on a Linux machine. Is there a way to pass in the value of an environment variable in a platform independent way?
I think (but I'm not sure) the platform-sensitive way would be:
-Denv_var=%MY_ENV_VAR% (Windows)
-Denv_var=$MY_ENV_VAR (Linux)
and from there I would access the value (in Java) using
System.getProperty("MY_ENV_VAR");
— is that correct?
The Javadoc for System.getenv(String name)
seem to imply that method is platform-dependent, but I'm not clear on that. Could I just skip passing the variable into the JVM completely, and use getenv()
after using setting the value for an environment variable using the OS?
System.getenv() is platform-independent by itself. Using your above example, you can most certainly write
String value = System.getenv("MY_ENV_VAR")
and it will work on both Linux and Windows. No reason to wrap this into java system property. That said, the "platform-dependent" part of getenv()
lies in the fact that different operating systems use different environment variables, like PATH on windows vs path on Linux. But as long as you're using your own variables and name them consistently (always uppercase, for example), you'll be fine.