【问题标题】:What's the difference between a System property and environment variable系统属性和环境变量有什么区别
【发布时间】:2011-02-21 06:19:05
【问题描述】:

我不清楚这一点。当我在 applet 查看器中运行 java 应用程序或运行 Applet 时(在 IDE 环境中),System.getProperty("java.class.path") 给了我与 System.getenv("CLASSPATH") 相同的结果,这是我的 env 变量中定义的 CLASSPATH。

但是当我将我的小程序部署到网络服务器并从作为客户端的同一台计算机访问它时,我会得到两者不同的结果。 (System.getProperty("java.class.path") 仅指向 JRE 主页,System.getenv("CLASSPATH") 返回 null)。

还有一些让我想知道的其他事情:

对于小程序部分,env var JAVA_HOME,我在浏览器和小程序查看器中部署小程序时得到相同的结果。

如果我在系统级别定义一个环境变量,并使用getenv("envName"),结果是null。无论如何我可以定义一个并在我的 Java 程序中获取它吗?

【问题讨论】:

  • 我一直在犯错误 System.getProperty("java.io.tmpdir") vs System.getenv("TEMP")
  • 对于以后来这个问题的人,this question 被标记为重复,并且也有一些很好的答案。

标签: java environment-variables classpath system system-properties


【解决方案1】:

环境变量特定于操作系统。属性仅适用于 JVM。

【讨论】:

  • 我仍然不明白 env var 是否属于操作系统,为什么我在 applet 中获取类路径的 env var 的代码在两种情况下返回不同的结果。两种情况的区别只是JVM吧?
  • 你看过 System.getenv 的 javadoc 吗?我认为无论您是从浏览器、IDE 还是控制台运行它都会有所不同。每一个都可以有不同的环境。
【解决方案2】:
System.getProperty("Propertname") **Platform Independent** 

上述方法将返回 JVM 参数和属性。

System.getenv("EnvName")       **Platform Dependent**

上述方法返回您的操作系统environment 变量。

在 Linux 中,您可以使用以下命令从 shell 设置环境变量 命令。

export SYSTEM_TYPE=PROD

在Java中,您可以通过

读取变量
System.getenv("SYSTEM_TYPE")

以上代码将返回PROD

http://javarevisited.blogspot.in/2012/08/how-to-get-environment-variables-in.html

【讨论】:

    猜你喜欢
    • 2015-01-10
    • 2012-05-21
    • 2011-10-26
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 2011-05-24
    • 2020-04-03
    相关资源
    最近更新 更多