服务使用的是spring cloud整合jfinal(仅用到了ActiveRecord,kit包)
jfinal原版本4.2,升级至4.9.02版本后使用HttpKit.post,出现java.io.InvalidClassException
java.lang.IllegalArgumentException: java.io.InvalidClassException: com.jfinal.kit.Kv; local class incompatible: stream classdesc serialVersionUID = 8574537963086834849, local class serialVersionUID = -6086130186405306902
经测试,升级至4.8能正常使用,4.9,4.9.01,4.9.02版本均出现上述问题
4.2~4.8之间的版本未测试
其他测试:
在Kv源码(版本4.9.02)中添加serialVersionUID即可正常使用HttpKit.post
继续补充的测试:
服务外使用HttpKit.post(版本4.9+),访问服务(原4.2)接口,能正常返回
服务内使用HttpKit.post(版本4.9.02),访问服务(升级到4.9.02)接口,不能正常返回
项目:JFinal
简单说就是序列化与反序列化使用了不同版本的 Kv,造成了这个异常,可以通过将 serialVersionUID 修改成一样的值来解决,也可以同时升级客户端与服务端的到 jfinal 4.9.02 来解决
还有一个办法是用 HashMap 代替 Kv 的使用