gpt4 book ai didi

java - 环境变量和系统属性之间的区别

转载 作者:行者123 更新时间:2023-12-02 00:59:15 31 4
gpt4 key购买 nike

我使用以下链接来了解环境变量和系统属性。

https://docs.oracle.com/javase/tutorial/essential/environment/env.html

该链接表示环境变量由操作系统设置并传递给应用程序。当我使用 System.getenv() 获取环境变量时,它向我显示了许多我从未设置过的属性。所以它一定是操作系统(我使用的是 macOS)设置了这些属性。System.getenv() 中的一些属性为 MAVEN_CMD_LINE_ARGSJAVA_MAIN_CLASS_1420JAVA_MAIN_CLASS_1430

我的问题是为什么操作系统要在环境变量中设置 java 特定属性?理想情况下,这些应该由 JVM 设置(在 System.properties() 中)。

P.S.:从我在网上读到的内容来看,我了解到环境变量是由操作系统设置的,而 System.properties() 是由 JVM 设置的

此外,如果有人可以向我指出有关环境变量和 System.properties 的良好链接,那将非常有帮助。我对这两者很困惑。

最佳答案

环境变量是一个操作系统概念,由启动 Java 程序的程序传递。

这通常是操作系统,例如双击资源管理器窗口或在命令提示符中运行命令,即可获取操作系统管理的环境变量列表。

如果另一个程序启动您的 Java 程序1,例如IDE(Eclipse、IntelliJ、NetBeans...)或构建工具(Maven、Groovy...),它可以修改环境变量列表,通常是添加更多变量。例如。名为 MAVEN_CMD_LINE_ARGS 的环境变量往往表明您可能正在使用 Maven 运行程序。

在运行的Java程序中,环境变量列表无法修改。


系统属性是一个Java概念。 JVM会自动分配很多启动时的系统属性。

您可以使用 -D 命令行参数在启动时添加/覆盖这些值。

在正在运行的 Java 程序中,系统属性列表可以由程序本身修改,尽管这通常是一个坏主意。


1) 作为引用,如果一个Java程序想要启动另一个Java程序,它通常会使用 ProcessBuilder进行设置。新Java进程的环境变量默认与当前Java程序相同,但可以通过调用 environment() 为新Java程序进行修改。构建器的方法。

关于java - 环境变量和系统属性之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60925254/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com