【问题标题】:java can run jar from cmd but not by double clickingjava可以从cmd运行jar,但不能双击
【发布时间】:2011-11-11 15:29:15
【问题描述】:

我刚刚使用 jdk7 创建了一个 jar 文件。我尝试运行它,但一直出错。原来它指向的是 jre6 而不是 jdk7 中的 jre。所以,我用下面的命令来改变它

ftype jarfile = "C:\path to jre\bin\javaw.exe" -jar "%1" %*

之后,我尝试再次双击我的 jar 文件,但它弹出一个窗口,要求我选择一个程序来打开它。当我选择与上面相同的 javaw.exe 文件时,它运行但立即退出而不做任何事情。我可以通过执行 java -jar file.jar 命令在 cmd 中正常运行它。我什至尝试删除 .jar 注册表项,但这让我回到了它要求我选择要打开的程序的地步。如果这很重要,我正在运行 Windows 7 Ultimate。

编辑: 在注册表中有 3 个子项:OpenWithList、OpenWithProgids 和 UserChoice。我已将所有默认值更改为上面的路径,除了 UserChoice 不允许我从 regedit 编辑它。当我删除它并尝试运行 jar 文件时,它会打开选​​择一个程序以再次打开窗口。由于某种原因,它忽略了其他注册表项

【问题讨论】:

    标签: java windows jar


    【解决方案1】:

    好的,我在其他地方找到了答案,但又遇到了这个问题,所以通过谷歌来到这里。
    解决办法是……

    1. 打开 regedit.exe
    2. 或者搜索“jre6”或者按照这个:
      HKLM->SOFTWARE->Classes->jarfile->shell->open->command
    3. 将数据字段更改为 JDK 目录中 javaw.exe 文件的目录。
    4. 看在上帝的份上,别忘了把奇怪的[-jar "%1" %*] 放在最后。
    5. 享受智胜 Oracle。

    希望这可以为一些人节省一些时间。

    这发生在我为 Chrome 安装 JRE6 插件时,但我猜在安装任何其他 JRE 时可能会发生这种情况。

    【讨论】:

    • 对我来说正确的键(Win7)是 HKEY_CURRENT_USER\Software\Classes\jar_auto_file\shell\open\command 因为“全局”关联完全丢失了,我试图用“OpenWith”打开 jar "
    【解决方案2】:

    我通过 regedit 修复了它并搜索了 jre,它显示了...

    HKEY_CURRENT_USER/Software/Classes/Applications/javaw.exe/shell/open/command

    我更改了 REG_SZ

    来自:“C:\Program Files (x86)\Java\jre7\bin\javaw.exe”“%1”

    到:"C:\Program Files (x86)\Java\jre7\bin\javaw.exe" -jar "%1" %*

    【讨论】:

      【解决方案3】:

      当 Windows 要求您提供一个程序来运行它时,它不会在命令行中插入所需的 -jar 参数。

      如果它要求您提供运行它的exe,那么这意味着您的JRE.jar 扩展无关。您需要修改.jar 文件注册表项,使其运行c:\path_to_jre\bin\javaw -jar %1 才能正常工作。
      它曾经在File Explorer > Tools > Folder Options > File Types 下。

      然后在那里寻找.jar。您应该找到一个显示要运行的可执行文件和命令行参数的文本字段。这就是您要修改的内容。您也可以在注册表编辑器中执行此操作,但我忘记了 HKEY 变量路径。我相信这个 KBA 会有所帮助:

      support_microsoft_kb_950505

      【讨论】:

      • 这种关联正是 jhlu87 显示的ftype 命令正在做的事情。
      【解决方案4】:

      检查文件类型jarfile是否实际使用*.jar扩展名注册

      assoc .jar
      

      好像 .jar 没有链接到 jarfile。

      【讨论】:

        【解决方案5】:

        我不确定为什么所有解决方案都不起作用,但我重新安装了 jre7,它现在​​可以工作了。

        【讨论】:

          【解决方案6】:

          通过更改CLASSPATH 环境变量将你的java 版本更改为你的rnew jdk7 不是更容易吗?看看如何here

          【讨论】:

            猜你喜欢
            • 2017-02-05
            • 1970-01-01
            • 1970-01-01
            • 2013-07-05
            • 1970-01-01
            • 1970-01-01
            • 2021-12-24
            • 1970-01-01
            • 2023-04-04
            相关资源
            最近更新 更多