2011年2月12日

看此文前请保证jar包中有至少一个Main方法入口,及图形化的界面。 
并保证META-INF/MANIFEST文件中的Main-Class已经指向之前实现的main方法入口。 

最近硬盘坏了,于是重新安装了OS,发现拷贝后的jdk或jre(未经安装的版本),不能打开jar文件执行(jdk版本1.6_11), 
于是在打开方式中指向了javaw程序,发现无效,并提示"cannot find main class", 与此同时windows把jar类型的文件关联到了指定的javaw程序上,上网找了一通,没有人提及这个问题的解决办法,而显然这个问题又不是由开篇中提到的问题导致的。 
于是在注册表中当前用户配置中删除了当前jar类型的定义。但是重新尝试后依然无效。 

于是重新安装了jdk,发现这次可以打开jar文件了,并且这次用来打开的程序从打开方式来看仍然是javaw。比较注册表中文件类型的定义,并没有差别。从【文件夹选项】 -> 【文件类型】来看终于看到了差别,【高级】里面的open操作定义如下: 
"C:\Program Files\Java\jre6\bin\javaw.exe" -jar "%1" %* 
而如果我们自己选择javaw,默认的open操作是没有 -jar参数的,必须手工加进去。 
我们知道java启动jar包的参数是 -jar,但是记得以前javaw是可以直接打开jar的,不知什么时候起也需要带有-jar参数了。 

所以对于一个拷贝的绿色jre只要修改一下open操作的定义就可以解决上面的问题了。 

解决了上面的问题,又产生了新的问题,之前选择打开的javaw程序在打开方式中丢不掉了,比较多余,这个可以在注册表中修改 
HKEY_CLASSES_ROOT\Applications下面找到响应的程序删除就可以了,原来每次用一个程序打开一个类型的文件windows都会在 
注册表中这个地方留下相关的记录

posted @ 2011-02-12 09:21 Sigmazel 阅读(1348) 评论(0) 编辑