Tag: 平台独立性

以与平台无关的方式将环境变量传递给JVM

我正在开发一个在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 System.getenv(String name)似乎暗示该方法依赖于平台,但我不清楚。 我是否可以完全跳过将变量完全传递到JVM中,并在使用OS设置环境变量的值后使用getenv() ?

我可以找出当前平台上java.library.path映射到的变量吗?

到目前为止,我已经了解了有关java.library.path属性的以下内容: 它在加载本机库时使用,而不是java类 其默认值取决于操作系统: 在Windows上,它映射到PATH 在Linux上,它映射到LD_LIBRARY_PATH 在OS X上,它映射到DYLD_LIBRARY_PATH (如果我误解了上述任何一项,请纠正我) 我的动机: 我想从我设置的框架中修改Java应用程序看到的java.library.path的值,以调用Java应用程序。 我想这样做不是通过直接设置java.library.path属性,而是通过修改它映射到的系统路径变量。 我想要一个干净的方法来做这个没有丑陋的操作系统特定代码或尽可能省略边缘情况。 我的问题: 有没有办法要求本地Java实现java.library.path映射到哪个环境变量? 然后,在shell脚本中,我可以写下以下内容: path_var = get_library_path_variable # the magic function I want to call ${path_var} = /my/custom/path:${${path_var}}