Log4j2中JsonTemplateLayout出现IllegalAccessError问题求助
Log4j2 JsonTemplateLayout 抛出 IllegalAccessError 排查指南
核心原因定位
IllegalAccessError 本质是类访问权限不匹配或依赖版本冲突,优先从以下几个方向排查:
1. 强制对齐Log4j2全组件版本
JsonTemplateLayout 属于 log4j-layout-template-json 模块,必须和 log4j-core、log4j-api 版本完全一致,版本差异会导致内部类结构不兼容,直接触发权限错误:
- 打开 pom.xml,确保所有Log4j2相关依赖版本号完全相同(推荐使用2.20.0及以上稳定版)
- 执行
mvn dependency:tree扫描依赖树,若发现第三方依赖引入了不同版本的Log4j2组件,立即用<exclusions>标签排除冲突版本
2. 校验JsonTemplateLayout配置合法性
检查你的 log4j2.xml 配置:
- 确认布局类路径正确:
org.apache.logging.log4j.core.layout.JsonTemplateLayout - 若配置了
eventTemplateUri,确保模板文件路径能被类加载器读取(默认模板无需额外配置,只要依赖包完整即可) - 避免使用当前版本不支持的属性(比如旧版本不支持的新特性,或新版本已移除的旧属性)
3. 排查代码中的非法访问逻辑
检查你的控制器代码:
- 禁止直接反射调用Log4j2的内部私有类/方法,必须使用官方公开API
- 确认项目中没有字节码增强工具(如某些AOP框架、字节码修改插件)篡改Log4j2类的访问权限
4. 解决Web容器类加载冲突
如果是Web项目:
- 检查Tomcat等容器的
lib目录,禁止存在Log4j2的jar包,避免容器类加载器加载的旧版本类和项目依赖的新版本类冲突 - 确保项目打包时,Log4j2依赖全部打包到
WEB-INF/lib下,由项目类加载器统一加载
内容的提问来源于stack exchange,提问作者anshu_anand
相关产品推荐
相关产品推荐

