Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这个程序抛出java.lang.UnsupportedOperationException import java.util.Map; 课堂测试{ 公共静态void main(字符串[]args){ Map env=System.getenv(); 系统输出打印LN(环境); 环境资产负债表(“ID”、“1”); } }_Java - Fatal编程技术网

为什么这个程序抛出java.lang.UnsupportedOperationException import java.util.Map; 课堂测试{ 公共静态void main(字符串[]args){ Map env=System.getenv(); 系统输出打印LN(环境); 环境资产负债表(“ID”、“1”); } }

为什么这个程序抛出java.lang.UnsupportedOperationException import java.util.Map; 课堂测试{ 公共静态void main(字符串[]args){ Map env=System.getenv(); 系统输出打印LN(环境); 环境资产负债表(“ID”、“1”); } },java,Java,我在初始化时在映射中添加了一些键值对,然后又添加了一个键值对,因此程序有什么问题?否您无法修改返回的映射 返回不可修改的映射 返回当前系统环境的不可修改字符串映射视图 原因是,映射包含有关正在运行的系统的信息,您不能简单地通过编程添加信息 我在初始化时在映射中添加了一些键值对 不,你不是。您正在初始化映射引用变量env,以引用调用System.getEnv()返回的预先存在的映射 然后再次添加一个键值对,那么程序有什么问题 如上所述,您第一次尝试添加一个键值对。Javadoc用于。它说put方法

我在初始化时在映射中添加了一些键值对,然后又添加了一个键值对,因此程序有什么问题?

否您无法修改返回的映射

返回不可修改的映射

返回当前系统环境的不可修改字符串映射视图

原因是,映射包含有关正在运行的系统的信息,您不能简单地通过编程添加信息

我在初始化时在映射中添加了一些键值对

不,你不是。您正在初始化映射引用变量
env
,以引用调用
System.getEnv()
返回的预先存在的映射

然后再次添加一个键值对,那么程序有什么问题

如上所述,您第一次尝试添加一个键值对。Javadoc用于。它说
put
方法是一个可选操作。实际上,
getEnv()
返回的映射类型不支持
put()

你到底想干什么?如果要更改子流程的环境,请使用
ProcessBuilder
类,该类允许您指定其他环境变量。如果您试图更改当前进程的环境,则只需创建自己的私有映射,将
getEnv()
中的所有条目复制到该映射中,然后在需要时使用自己的映射而不是
getEnv()

import java.util.Map;

class Test {
    public static void main(String[] args) {
        Map<String, String> env = System.getenv();
        System.out.println(env);
        env.put("ID", "1");
    }
}