Passing environment variables to a JVM, in a platform-independent manner

后端 未结 3 972
离开以前
离开以前 2020-12-30 23:30

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

相关标签:
3条回答
  • 2020-12-31 00:10

    How I interpret the java tutorial on this is that getenv works in a platform independent way, but that you have to keep in mind that variables are not consistently named across platforms. Since you seem to set the var yourself, this does not apply to you.

    0 讨论(0)
  • 2020-12-31 00:12

    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.

    0 讨论(0)
  • 2020-12-31 00:35

    Yes - getEnv() will just return the name of the environment variable, and you can set it in whatever way is appropriate to the platform you're running on (typically via a launch batch file on Win32). It's good practice to fall back on sensible defaults based on the platform (by inspecting System.getProperty("os.name")), if it's possible you want to avoid having your users bother with needing to mess with environmental variables to run your software.

    0 讨论(0)
提交回复
热议问题