本地导出不报错,发布到测试环境点导出报异常: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;
}