本地导出不报错,发布到测试环境点导出报异常:Method not found: is$jacocoData get$jacocoData

本地导出不报错,发布到测试环境,点导出报异常:Method not found: get$jacocoData     is$jacocoData

日志:

[2020-04-15 20:41:50.912][default task-24][DEBUG]- getMethodName:get$jacocoData
[2020-04-15 20:41:50.913][default task-24][ERROR] - Excel文件创建异常
java.lang.NoSuchMethodException: com.RecordExportBO.get$jacocoData()
at java.lang.Class.getDeclaredMethod(Class.java:2130)
at com.util.excel.ExcelWriter.writeData(ExcelWriter.java:131)

经分析,是因为excel导出的时候,通过反射获取类的字段

Field[] fields = t.getClass().getDeclaredFields();
通过打印日志发现反射获取的字段多了一个jacocoData。

是由于,项目发布前需要进行新增代码覆盖率检查,增加了jacoco来统计代码覆盖率,通过编译期间加上了统计字段jacocoData

而这个字段没有getset方法 所以导致报错

可以通过 .isSynthetic()判断,来剔除不是原生的字段

if (field.isSynthetic()) {
    continue;
}

posted @ 2020-04-15 22:04  嘉美祥瑞  阅读(1612)  评论(0编辑  收藏  举报