今天客戶發過來一個新的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 閱讀(5112)
評論(0) 編輯 收藏