java可以从cmd运行jar,但不能通过双击来运行

java可以从cmd运行jar,但不能通过双击来运行,java,windows,jar,Java,Windows,Jar,我刚刚用jdk7创建了一个jar文件。我试着运行它,但总是出错。结果表明,它指向的是jre6,而不是jdk7中的jre。因此,我使用以下命令来更改它 ftype jarfile=C:\jre\bin\javaw.exe的路径-jar%1%* 之后,我试图再次双击我的jar文件,但它弹出了一个窗口,要求我选择一个程序来打开它。当我选择与上面相同的javaw.exe文件时,它会运行,但会立即退出,而不做任何操作。通过执行java-jar file.jar命令,我可以在cmd中很好地运行它。我甚至尝试

我刚刚用jdk7创建了一个jar文件。我试着运行它,但总是出错。结果表明,它指向的是jre6,而不是jdk7中的jre。因此,我使用以下命令来更改它

ftype jarfile=C:\jre\bin\javaw.exe的路径-jar%1%*

之后,我试图再次双击我的jar文件,但它弹出了一个窗口,要求我选择一个程序来打开它。当我选择与上面相同的javaw.exe文件时,它会运行,但会立即退出,而不做任何操作。通过执行java-jar file.jar命令,我可以在cmd中很好地运行它。我甚至尝试删除.jar注册表项,但这让我回到了它要求我选择要打开的程序的位置。如果这很重要的话,我正在运行Windows7终极版

编辑:
在注册表中有3个子项:OpenWithList、OpenWithProgId和UserChoice。我已将所有默认值更改为上面的路径,但UserChoice不允许我从regedit编辑它。当我删除它并尝试运行jar文件时,它会再次打开“选择要打开的程序”窗口。由于某些原因,当windows要求您运行一个程序时,它会忽略其他注册表项,而不会在命令行中插入所需的-jar参数。 如果它要求您在其中运行它的exe,那么这意味着不知何故您的JRE与.jar扩展没有关联。您需要修改.jar文件注册表项,使其运行c:\path\u to\u jre\bin\javaw-jar%1才能工作。 它以前位于文件资源管理器>工具>文件夹选项>文件类型下。 那就在里面找罐子。您应该找到一个显示要运行的可执行文件和命令行参数的文本字段。这就是您要修改的内容。您也可以在注册表编辑器中执行此操作,但我忘记了HKEY变量路径。我相信这个KBA将有助于:


通过更改CLASSPATH环境变量,将java版本更改为新jdk7不是更容易吗?查看如何使用检查文件类型jarfile是否实际注册到*.jar扩展名

assoc .jar

似乎.jar没有链接到jarfile。

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

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

打开regedit.exe 搜索jre6或遵循以下命令:HKLM->SOFTWARE->Classes->jarfile->shell->open->command 将数据字段更改为JDK目录中javaw.exe文件的目录。 看在上帝的份上,别忘了把奇怪的[-jar%1%*]部分放在它的末尾。 享受超越甲骨文的乐趣。 希望这能节省一些人的时间


这发生在我为Chrome安装JRE6插件的时候,不过我想在安装任何其他JRE时都可能发生。

我通过进入regedit并搜索JRE来修复它,找到了

HKEY_当前_用户/Software/Classes/Applications/javaw.exe/shell/open/command

我换了注册表

来自:C:\ProgramFilesx86\Java\jre7\bin\javaw.exe%1


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

该关联正是jhlu87显示的ftype命令所做的。我Win7的正确键是HKEY_CURRENT_USER\Software\Classes\jar_auto_file\shell\open\命令,因为全局关联已完全丢失,我已尝试使用OpenWith打开jar