报错:Method not found: is$jacocoData
public static boolean checkObjFieldIsNull(Object obj) throws IllegalAccessException {
boolean flag = false;
for (Field f : obj.getClass().getDeclaredFields()) {
f.setAccessible(true);
String g = f.getName();
if (g.equals("serialVersionUID")) {
continue;
}
if (f.get(obj) != null) {
flag = true;
return flag;
}
}
return flag;
}
项目中使用很久的公共方法checkObjFieldIsNull,本地校验一个null对象时为true,测试环境检验确实false。百思不得其解。
最后加入日志打印才发现DEV环境中多了一个字段$jacocoData。但是本地正常。
部署dev环境时候,maven集成了jacoco来统计单元测试的代码覆盖率。才会多一个$jacocoData
修改方法如下:
public static boolean checkObjFieldIsNull(Object obj) throws IllegalAccessException {
boolean flag = false;
for (Field f : obj.getClass().getDeclaredFields()) {
f.setAccessible(true);
String g = f.getName();
if (g.equals("serialVersionUID")) {
continue;
}
if (f.isSynthetic()) {
continue;
}
if (f.get(obj) != null) {
flag = true;
return flag;
}
}
return flag;
}