今天客户发过来一个新的jar包B.jar,让我替换原来的进行测试,但是替换完毕执行后,出现如下错误:
C:\Program Files\Java\jdk1.5.0_16
Exception in thread "main" java.lang.SecurityException: class "xx.xx"'s signer information does not match signer information of other classes in the same package
at java.lang.ClassLoader.checkCerts(ClassLoader.java:775)
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:487)
at java.lang.ClassLoader.defineClass(ClassLoader.java:614)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
4)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at xx.xx(xx.java:80)
网上搜了一圈,大部分说引入的jar包呢有相同类名的类,所以loader的时候出现错误。
但是目前做的一个小产品,只有两个jar包,A.jar和前文提到的B.jar,没有引入第三方包。我仔细查了一下两个jar包,不存在相同类名的情况。
最后发现这个问题很多时候和数字签名这个关键字一起出现。然后仔细检查,发现新的B.jar里面忘记加数字签名了。
把A.jar里面的数字签名删除,运行正常。
目前在等待加完数字签名的B.jar,也在查资料寻找出现此问题的原因,未完待续。
posted on 2011-08-18 18:53
temper 阅读(5084)
评论(0) 编辑 收藏