APIJSON Version/APIJSON 版本号
6.3.0
Database Type & Version/数据库类型及版本号
mysql8
Environment/环境信息
然后提交问题,推荐用以下模板修改,注意要换行保持清晰可读。
【标题】:Cannot invoke "java.util.Map.get(Object)" because "apijson.orm.AbstractVerifier.ACCESS_FAKE_DELETE_MAP" is null
【内容】:
**环境信息**
系统: Windows 11 10.0
数据库: <!-- 请填写,例如 MySQL 5.7。默认数据库为 MYSQL -->
JDK: 21.0.1 amd64
APIJSON: 6.3.0
APIAuto Screenshots/APIAuto 请求与结果完整截屏
程序无法启动
Current Behavior/问题描述
**问题描述**
启动 或者调用 接口报这个错误
Cannot invoke "java.util.Map.get(Object)" because "apijson.orm.AbstractVerifier.ACCESS_FAKE_DELETE_MAP" is null
Expected Behavior/期望结果
不报这个错误,可软删除
Any additional comments?/其它补充说明?
//关闭debug 信息
Log.DEBUG = false; 去启动
5条答案
按热度按时间vktxenjb1#
没有及时初始化导致的 bug,这里应该在 static 代码块加上
ACCESS_FAKE_DELETE_MAP = new LinkedHashMap<>();
https://github.com/Tencent/APIJSON/blob/master/APIJSONORM/src/main/java/apijson/orm/AbstractVerifier.java#L133-L150
MultiDataSource 等 Demo 没复现是因为 APIJSONVerifier.initAccess 把它初始化了
,但如果没有依赖 apijson-framework 并成功调用 APIJSONVerifier.initAccess,ACCESS_FAKE_DELETE_MAP 照样也没初始化,后面 ACCESS_FAKE_DELETE_MAP.get 也会照样报错 NPE。
ax6ht2ek2#
jitpack 6.3.0 APIJSON 的jar 包 源码也是不对的,
vu8f3i0k3#
#652 (comment) 这里我有说明
syqv5f0l4#
放开这段代码 后 错误日志
java.lang.IllegalArgumentException: URL 路径 /get/sysUserPage 对应的接口不存在!
at apijson.router.APIJSONRouterController.router(APIJSONRouterController.java:181)
at apijson.router.APIJSONRouterController.router(APIJSONRouterController.java:65)
请求参数
{
"SysUser[]":{
"SysUser":{"realName":"超级管理员"},
"page":0,
"count":10
},
"total@":"/SysUser[]/total",
"format":true
}
e5njpo685#
这个问题应该和之前的 ACCESS_FAKE_DELETE_MAP = null 无关,应该是用了 apijson-router 但没配置 Document 记录导致
https://github.com/APIJSON/apijson-router?tab=readme-ov-file#usage