我用的是 jarsigner.exe 打数字签名,和eclipse打包。
APPLET开发需要访问本地资源,然后就为JAR包打了数字签名以便来访问,得到MAC地址,本机实验,完全没问题,很好。JAR在没打数字签名的时候 MANIFEST.MF文件里只有一行 Manifest-Version: 1.0 在把这个版本号向大点更改的时候 虚拟机会自动察觉重新下载JAR包,一切正常。
但是打了数字签名的时候问题来了,首先是我为了要更新在打签名后,再更改版本号。出现找不到类错误。
然后想了下,是否版本号也在整个包的签名验证范围内?就先换版本号,再打签名,可以进去了。没有报安全错误,证书提示也出来了。但是发现虚拟机好象没有加载JAVA的进度条很快跑完了似乎没有重新加载包,就进去了。
然后,不仅仅 META-INF 文件夹下多了两个签名用的文件 连 MANIFEST.MF 也加了许多项目进去好象是每个声音文件图片和CLASS文件的路径被重新加密过了。可能是因为以前更新包什么的图片的显示,有些近期改动的,显示不出来。所以就想到了,可能没有重新下载包。
不过后来无论如何更改 版本号都是瞬间进去了,并没有重新下栽。继续查找,发现了有.SF文件中有Signature-Version1.0 这样的一个东西,可能对版本控制更新有影响么?上GOOGLE查了查大多都是讲 JAR签名的工具jarsigner.exe 作用什么的以及.MF .SF每个字段的意义,官方JDK 里的文章对于 Signature-Version1.0 和 Manifest-Version: 1.0的关系也是一笔带过,说 Manifest-Version 大于 Signature-Version 的时候可以用“扩展功能”看得我云里雾里。不明白。
而且在JAR包里的 .SF 文件是无法修改的。我怎么能修改.SF 中的 Signature-Version 呢?他是我用jarsigner.exe 打出来的玩意,那在命令行里的jarsigner也没有命令是指定签字版本的(我用的是 WINDOWS 下)。请问,有什么方法可以动 .SF文件中的 Signature-Version 呢? 然后还有  Manifest-Version 和 Signature-Versi 的关系是怎样的? 如何才能正确的更新呢?谢谢各位了,抱歉说得有点乱,我也挺着急的。
如果我发的地方不对,请版主指示。