​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,就不报错了。但这样的话,就不能使用运行期间,改代码,会自动编译加载的功能了。