欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java异常 NoSuchMethodException get$jacocoData()

程序员文章站 2022-07-14 17:34:27
...

NoSuchMethodException get$jacocoData()

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

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

解决方法
1.去掉代码覆盖率工具jacoco,启动的时候去掉参数
Java异常 NoSuchMethodException get$jacocoData()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

相关标签: 问题异常

上一篇: 79. Word Search

下一篇: 编码问题