在进行单元测试时发生异常如下:在同一个包中类的签名信息不匹配。类对应的jar为,spring-web-****.jar
Caused by: java.lang.SecurityException: class "org.springframework.http.converter.GenericHttpMessageConverter"'s signer information does not match signer information of other classes in the same package
at java.lang.ClassLoader.checkCerts(ClassLoader.java:806)at java.lang.ClassLoader.preDefineClass(ClassLoader.java:487)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:625)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
分析:通常是加载了2个不同版本的jar,不过原因却有多种。解决的办法就是找到并删除重复的jar.
1.在WEB-INFO/lib目录下有2个不同的版本:spring-web-3.2.5.RELEASE.jar 与spring-web-3.1.1.RELEASE.jar同事
2.WEB-INFO/lib与其它加载的Libraries中相同的jar包存在不同的版本。
3.不同的Libraries中相同的jar包存在不同的版本。
当时我遇到的情况是:maven加载的jar 与spring OSGI Bundles中jar重复存在不同的版本。删除 OSGI Bundles(Spring),单元测试正常。