首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
undertow classloader问题
macaque
2018-12-10 17:00
同一个类报 类型转换异常
发现classloader 不一样了 这是为什么呢?
下面是场景
红包部分就报错了
项目:
JFinal
评论区
macaque
2018-12-10 17:09
@Jfinal
回复
JFinal
2018-12-10 17:37
你的这个 article 应该是处在 jar 包之中,jfinal undertow 默认只为 target/classes 下面的资源提供热加载
所以,需要配置一下:
UndertowServer.create(...)
.addHotSwapClassPrefix("com.newrank.")
.start();
回复
macaque
2018-12-10 17:38
@JFinal
没有在jar包中
回复
macaque
2018-12-10 17:38
@JFinal
我加了undertow.hotSwapClassPrefix=com.newrank.cbox. 也不好用 但是 dev 改成false就好了
回复
JFinal
2018-12-10 17:39
Article 这个类在那里? 是不是你在 start() 之前触发了类加载?
回复
macaque
2018-12-10 17:41
@JFinal
Article就是自动生成的model
回复
macaque
2018-12-10 17:42
@JFinal
start()之前也没有加载
回复
JFinal
2018-12-10 17:42
@macaque
dev 改成 false 后不支持热加载了
应该是你在 UndertowServer.start() 方法调用之前就有别的代码进行了别的操作
UndertowServer.start() 启动的 jfinal 世界与你自己在这之前的代码处在两个世界,分别由不同的 class loader 加载
回复
macaque
2018-12-10 17:45
@JFinal
.start() 之前 确实没有加载 我把使用报错的代码加上了 波总帮看下
回复
macaque
2018-12-10 17:46
@JFinal
中间有个redis
回复
JFinal
2018-12-10 17:49
@macaque
原来如此,添加这几行代码:
UndertowServer.create(...)
.addHotSwapClassPrefix("redis.clients.")
.addHotSwapClassPrefix("org.nustaq.")
.start();
有关 redis 的支持,今天会发新版本支持,然后你就不需要上面两行代码了
回复
macaque
2018-12-10 17:50
好的 谢谢
回复
macaque
2018-12-10 17:51
@JFinal
undertow.hotSwapClassPrefix=com.newrank.cbox.,redis.clients.,org.nustaq. 写到配置文件也行吧
回复
macaque
2018-12-10 17:52
@JFinal
好用了 谢谢波总
回复
JFinal
2018-12-11 16:23
@macaque
昨晚发布的 jfinal undertow 1.2 已添加了两个 hotSwapClassPrefix,可以不用管这个问题了,升级到 1.2 即可
回复
发送
我要反馈
热门反馈
扫码入社