Java系统属性和环境变量


Answers:


148

我认为两者之间的区别归结为访问。系统环境变量可通过任何进程访问,而Java系统属性仅可通过将它们添加到的进程访问。

另外,正如Bohemian所说,env变量是在OS中设置的(但是可以通过Java进行设置),而系统属性则作为命令行选项传递或通过设置setProperty()


5
最后,这是添加变量的方式以及变量的范围。
Praveen Sripati 2011年

请记住,其他进程可以找到用于启动进程的cm​​d,因此也可以找到java系统属性。
基督教

359

42
绝对正确,波希米亚风格。环境变量是“ OS事物”,而属性是“ Java事物”。碰巧的是,Java选择将OS变量作为属性公开(就像Java将当前目录和“其他内容”公开为属性一样),但实际上它们是不同的。
paulsm4 2011年

@MarekSebera你是什么意思?
波希米亚

8
System.grtProperties()列出所有属性,并且在命令行中设置的属性将在那里,但是如果您要这样,则无法将其与系统添加的其他属性区分开。
波希米亚

11
请注意,您还可以使用环境变量设置系统属性JAVA_TOOL_OPTIONS
flacs 2014年

6
@KanagaveluSugumar是的,您需要重新启动:在启动时从环境中读取环境变量设置。即System.getenv(String name)不会在调用时从系统动态读取值。
波西米亚风格
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.