me.scan在开发环境下正常,发布到服务器就不执行了?

@JFinal @杜福忠

代码如下,在开发环境下,如下代码System.out可以输出classname的信息,并且通过@Path注解注册的路由可以正常访问。

但部署到生产环境,System.out就不输出信息了,通过@Path注解注册的路由不起作用。

使用JFinal5.0.0,undertow。生产环境下,自己的代码被打包成jar了,放到lib目录下。

配置undertow的devmode=false和增加undertow.hotSwapClassPrefix配置,也不起作用。

me.scan("cn.york.", className -> {
// className 为当前正扫描的类名,返回 true 时表示跳过当前类不扫描
//return className.startsWith("cn.york.common.swagger.");
System.out.println("className="+className);
System.out.println("swaggerenable="+swaggerenable);
if(swaggerenable) {
for(String swaggerPackage: swaggerPackageList) {
if(className.startsWith(swaggerPackage)) return true;
}
return false;
} else {
return false;
}
});


评论区

杜福忠

2022-06-12 10:23

有没有一种可能是: 没替换成功? 部署的时候, 先删除lib再上传试试。
还有写代码的时候,判断里面如果有 return 语句,就不要加else了

zzutligang

2022-06-12 20:32

@杜福忠 确保替换成功了,因为在MainConfig的configRoute内我增加了一个System.out.println信息,替换到生产环境下都输出信息了。但me.scan这个回调就没输出信息。之前一直没用过me.scan加@Path的方式注册路由,第一次用就翻车了。

zzutligang

2022-06-13 12:29

经过一夜排查,发现在开发机器上,打包后scan也不起作用,和服务器没关系了。我的项目是普通web项目,没使用maven管理。不知道和这个有关系没。继续排查中!

l745230

2022-06-13 16:17

建议你官网下个最新版的Jfinal-demo打个包试下 me.scan能不能用, 不能用 你电脑有问题, 能用 对比下两边代码有什么差异

zzutligang

2022-06-13 21:46

@l745230 正在排查对比中,有结果了,会在这里反馈