返回此进程生成器环境的字符串映射视图。
无论进程生成器何时创建,都需要将环境初始化为一份当前进程环境的副本(请参阅 system.getenv()
)。由此对象的 start()
方法启动的后续子进程将使用这一映射作为它们的环境。
可以使用普通的 map
操作来修改返回的对象。对于通过 start()
方法启动的子进程,这些修改是可见的。两个 processbuilder
实例总是包含独立的进程环境,因此,针对返回的映射的更改从不会在任何其他 processbuilder
实例或由 system.getenv
返回的值中反映出来。
如果系统不支持环境变量,将返回空映射。
返回的映射不允许空键或空值。试图插入空键或空值或者试图查询它们的存在,都将抛出 nullpointerexception
。试图查询非 string
类型的键或值的存在,都将抛出 classcastexception
。
返回的映射的行为取决于系统。系统可能不允许修改环境变量或禁止某些变量名或变量值。出于此原因,如果不允许
iis7站长之家修改的话,试图修改映射可能失败,并抛出 unsupportedoperationexception
或 illegalargumentexception
。
由于环境变量名和值的外部格式取决于系统,在它们与 java 的 unicode 字符串之间不可能是一对一映射。此外,映射以这种方式实现:不能由 java 代码修改的环境变量在子进程中将有一个不可修改的本机表示形式。
返回的映射及其集合视图不能遵守 object.equals(java.lang.object)
和 object.hashcode()
方法的常规协定。
返回的映射通常在所有平台上都是区分大小写的。
如果安全管理器存在,则其 checkpermission
方法通过 runtimepermission
("getenv.*")
权限进行调用。这可能导致抛出 securityexception
。
当将信息传递给 java 子进程时,系统属性通常优先于环境变量。
- 返回:
- 此进程生成器的环境
- 抛出:
securityexception
- 如果安全管理器存在并且其 checkpermission
方法不允许访问进程环境- 另请参见:
runtime.exec(string[],string[],java.io.file)
,
system.getenv()