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

我刚刚使用jdk7创build了一个jar文件。 我试图运行它,但不断得到一个错误。 原来它是指向一个jre6而不是jdk7中的jre。 所以,我用下面的命令来改变它

ftype jarfile =“C:\ jre \ bin \ javaw.exe的path”-jar“%1”%*

之后,我试着再次双击我的jar文件,但popup一个窗口,要求我select一个程序来打开它。 当我select与上面相同的javaw.exe文件时,它会立即运行,但不做任何事情。 我可以通过执行java -jar file.jar命令在cmd中正常运行。 我甚至尝试删除.jarregistry项,但是这让我回到了要求我select要打开的程序的地步。 如果有问题,我正在运行Windows 7的最终版本。

编辑:在registry中有3个子项:OpenWithList,OpenWithProgids和UserChoice。 我已经将所有的默认设置改为上面的path,除了UserChoice,它不会让我从registry编辑它。 当我删除它,并尝试运行该jar文件,它打开了select一个程序再次打开窗口。 由于某种原因,它忽略了其他registry项

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

  1. 打开regedit.exe
  2. 要么搜索“ jre6 ”,要么按照这个:
    HKLM->SOFTWARE->Classes->jarfile->shell->open->command
  3. 将数据字段更改为JDK目录中的javaw.exe文件的目录。
  4. 对于上帝的爱,不要忘记把奇怪的[-jar "%1" %*]部分放在它的末尾。
  5. 享受智取甲骨文。

希望这会节省一些人的时间。

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

我修好了,去注册,然后搜索了一下,

HKEY_CURRENT_USER /软件/班/应用/ javaw.exe的/壳/开/命令

我改变了REG_SZ

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

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

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

如果它要求你运行它的exe ,那么这意味着你的JRE不会和.jar扩展名关联。 您需要修改.jar文件注册表项,以使其运行c:\path_to_jre\bin\javaw -jar %1以使其工作。
它以前是在File Explorer > Tools > Folder Options > File Types

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

support_microsoft_kb_950505

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

 assoc .jar 

好像.jar没有链接到jarfile。

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

我不确定为什么没有解决方案的工作,但我重新安装JRE7,现在它的作品。