【问题标题】:Why is the java PATH variable needed only for terminal execution?为什么只有终端执行需要 java PATH 变量?
【发布时间】:2022-01-12 18:50:22
【问题描述】:

为什么需要在命令行启动jar而双击启动jar时不需要将java的安装路径添加到PATH变量中?为什么双击执行时操作系统只知道java安装在哪里(不带PATH变量)?

相关问题:

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

Is JAVA_HOME variable needed when Java Path is defined in system environment variable?

【问题讨论】:

    标签: java windows path operating-system


    【解决方案1】:

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

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

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

    【讨论】:

    • 啊,现在这绝对有道理。谢谢 :) 有什么方法可以访问这个 windows 注册表来避免将 java 安装添加到 PATH 环境变量的需要?
    • @Alrick,任何涉及注册表的解决方案对您来说只会更加困难和耗时。命令行并非旨在在执行程序时搜索注册表,因此您需要明确执行此操作。您可以手动查询注册表以找出使用了哪些可执行文件,但这只会让您的事情变得更加复杂。您可以运行assoc some_file.extension 以获取与给定扩展名关联的程序名称。然后你可以运行ftype "the program"得到可执行路径格式化字符串,打开的文件可以放入执行。
    • 完美!非常感谢您的专业知识和时间
    猜你喜欢
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 2017-08-18
    • 2020-03-28
    相关资源
    最近更新 更多