我们的项目采用JNLP的方式发布和访问,所以项目的包都会签名,我们一般将第3方的JAR包都直接放到JRE的LIB\EXT目录下,但是在调用到但使用了CGLIB动态代理的类时,会报签名信息不一致的错误。在将JRE下cglib的jar文件删除后,并在项目打包时一并打入CGLIB的JAR文件后,此问题不存在。我想请教的是在CGLIB放在JRE下,而项目包不打入CGLIB的JAR文件时有没有办法解决签名不一致的问题

解决方案 »

  1.   

    CGLIB的代理机制是面向普通的类,而jdk的代理是面向接口的,所以可能会有冲突。
      

  2.   

    这个跟JDK代理应该没有关系哦,看错误应该是CGLIB动态生成的代理类的签名跟项目包的签名不一致而产生的问题
      

  3.   

    签名不一致应该是因为使用的classloader不一样造成的。你可以尝试在调用cglib的方法的时候传入合适的classloader,应该没其他办法。只是为什么不直接放在项目包里面呢?
      

  4.   

    也不是不想放在项目包,只是想问放在项目包跟放在JRE下面的区别,然后如果放在JRE下有办法解决这种问题不