首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
JFinal 4.9 @Clear无效的情况
_imlzw_
2020-08-03 20:03
JFinal 4.9 @Clear无效的情况,追踪原码发现Class对象编号不一致。这里的判断是不是要用name来判断 ?
项目:
JFinal
评论区
_imlzw_
2020-08-03 20:10
@JFnial
回复
lxhxka
2020-08-04 08:46
热加载的问题?
回复
_imlzw_
2020-08-04 13:16
@lxhxka
自己写jetty代码加载, 用java Runtime.exec执行main方法启动:
public static void main(String[] args) {
String port = args[0];
String webRoot = args[1];
String extClassPath = args[2];
System.out.println("port:" + args[0] + "\nwebRoot:" + args[1] + "\nextClassPath:" + extClassPath + "\n");
try {
startWithJetty(Integer.parseInt(port), webRoot, extClassPath);
} catch (Exception exception) {
exception.printStackTrace();
}
}
public static void startWithJetty(int port, String webroot, String extClassPath) throws Exception {
Server server = new Server(port);
WebAppContext context = new WebAppContext();
context.setContextPath("/");
context.setResourceBase(webroot);// 指定webapp目录
context.setExtraClasspath(extClassPath);
server.setHandler(context);
server.start();
server.join();
}
回复
lxhxka
2020-08-04 14:52
@_imlzw_
你这个我直接看不出来,你看下两个 class 的classLoader 是不是同一个, 正常情况下同一个 class 不应该出现两个实例,具体自己再看看你的环境吧。
回复
_imlzw_
2020-08-05 14:25
@lxhxka
发现的确不一样,不知道为何会不一样。
curInterClass 的 类加载器为:sun.misc.Launcher$AppClassLoader@18b4aac2
ci 的 类加载器为:org.eclipse.jetty.webapp.WebAppClassLoader=jfinal offical website@72d1ad2e
回复
_imlzw_
2020-08-05 14:47
通过手动设置类加载器为系统默认加载器后,有效
context.setClassLoader(ClassLoader.getSystemClassLoader());
回复
JFinal
2020-08-05 15:07
@_imlzw_
估计是你的项目在哪里动了 ClassLoader 才出现的这个问题
正常流程使用 jfinal 从来不会出这个问题
回复
发送
我要反馈
热门反馈
扫码入社