为什么只有终端执行才需要 java PATH 变量?

Why is the java PATH variable needed only for terminal execution?

为什么双击启动jar时不需要将java安装路径添加到PATH变量中,而需要从命令行启动jar?为什么OS双击执行(没有PATH变量)才知道java安装在哪里?

相关问题:

Is it necessary to set the path variable in java installation?

在命令行上,您调用可执行文件并将文件作为参数传递给它。因为它不知道这个可执行文件在哪里,你要么需要用绝对路径调用它(包括从驱动器号到可执行文件的整个路径),要么可执行文件必须存在于系统中列出的位置之一 PATH 环境变量。

但是,当双击文件时 Windows 无法提前获知应该使用哪个应用程序。为了解决这个问题,Windows 保留了程序、文件扩展名和有关它们的各种元数据的全局注册表。这包括诸如为该文件类型显示哪个图标、用于打开该文件的可执行文件的路径、与给定程序关联的扩展名、从控制面板删除时要使用的卸载程序的路径等等。

Java 安装程序会在后台为您更新注册表,因此您不需要,但是根据您的安装设置,它可能不会更新系统路径,因为大多数人只会使用双点击方法。