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

版权声明:本文为whl-jx911原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/whl-jx911/p/12708869.html