本地導出不報錯,發布到測試環境點導出報異常: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;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM