Java异常 NoSuchMethodException get$jacocoData()

NoSuchMethodException get$jacocoData()

异常描述
本地环境,生产环境都没问题,只有测试环境发现问题。
java.lang.NoSuchMethodException: [对象] get$jacocoData()

异常分析
测试环境加了jacoco代码覆盖率的功能,该异常说明在代打运行时找不到该方法,实际该对象中并没有此方法,原因是有地方通过反射获取[对象]中的方法时,没找到get$jacocoData()方法。

解决方法
1.去掉代码覆盖率工具jacoco,启动的时候去掉参数
在这里插入图片描述2.在反射获取方法的地方去掉jacoco合成方法get$jacocoData()

    /**
     * 判断是否对象所有属性都为null, 或空字符串(继承的属性不考虑在内)
     * @param obj
     * @return
     * @throws IllegalAccessException
     */
    public static boolean isAllPropEmpty(Object obj) throws IllegalAccessException {
        Field[] declaredFields = obj.getClass().getDeclaredFields();
        for (Field declaredField : declaredFields) {

            //针对某些情况,编译器会引入一些字段,需要过滤掉
            if (declaredField.isSynthetic()){
                continue;
            }
            
            declaredField.setAccessible(true);
            Object value = declaredField.get(obj);

            if (value != null){
                if (! (value instanceof  String)){
                    return false;
                }else if(!((String) value).matches("^\\s*$")){
                    return false;
                }

            }
        }
        return true;
    }

参考
https://www.jianshu.com/p/1e0c3713aaed
https://blog.csdn.net/lingyiwin/article/details/98771136

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值