​Record user = (Record)obj强制转换报错?

@JFinal,@杜福忠

我把Record对象放到session里,然后取出来

Object obj = this.getSessionAttr("user");

Record user = (Record)obj;

就发生了下面这个异常,debug时候,看到obj已经是Record类型的了。

但打包后直接运行,不在开发工具下运行,又不报错了。估计是和类加载器有关,但不知道怎么处理。

java.lang.ClassCastException: com.jfinal.plugin.activerecord.Record cannot be cast to com.jfinal.plugin.activerecord.Record

评论区

杜福忠

2021-09-23 15:21

这个还真没试验过,建议是用 CacheKit代替 Session存取对象,
其次是文档中已经有说明解决方案:
https://jfinal.com/doc/1-5
第 4、类型转换异常、子类对象无法赋值到基类变量

zzutligang

2021-09-23 15:33

@杜福忠 但是报的错误是Record自己转自己错误,文档里说JFinal-undertow是会对JFinal自己热加载的。我用的JFinal是4.9.17,JFinal-undertow是2.7的,undertow是2.2.10,在maven仓库里查到的这三个是配套的啊。

zzutligang

2021-09-23 15:55

@杜福忠 刚做过实验,给你反馈一下,把undertow的配置文件里的undertow.devMode=true改成undertow.devMode=false,就不报错了。但这样的话,就不能使用运行期间,改代码,会自动编译加载的功能了。

杜福忠

2021-11-18 23:02

PS补充说明:后续社友私聊看了代码,是因为社友用了Redis,并自定义序列化类没有使用同一加载器导致,和JF或打包后运行没有关系。

热门反馈

扫码入社