标签:method 元素 结果 ext res node acl string 判断
bug天天有,今天异常多
异常名称:NoSuchMethodException
异常分析:找不到方法,方法调用错误?
问题原因:反射获取此方法的Method对象时e.getName()提取的只是元素标签,要求提取元素标签里面的值
//1.创建SAXReader对象 SAXReader reader = new SAXReader(); //2.读取XML文件 Document dom = reader.read("F:\\JavaTest\\test\\classes.xml"); //3.获取<className>元素 Element classTag = (Element)dom.selectSingleNode("/classes/class/className"); //4.获取<className>元素的值 String className = classTag.getText(); //5.反射获取Class对象 Class aClass = Class.forName(className);//获取了com.xxx.xxx路径 System.out.println(className);//className=com.xxx.xxx //6.创建对象 Object obj = aClass.newInstance(); //5.获取所有<methodName>元素 List<Element> methodTags = dom.selectNodes("/classes/class/methodName"); System.out.println(methodTags); //6.遍历集合 for (Element e : methodTags) { //反射获取此方法的Method对象 Method method = aClass.getMethod(e.getName()); //判断此方法上是否使用了MyTest注解 if (method.isAnnotationPresent(MyTest.class)) { //执行此方法 method.invoke(obj); }
解决方案:
Method method = aClass.getMethod(e.getName());
改为
Method method = aClass.getMethod(e.getText());
解决结果:成功!
*注意事项:无
Exception:NoSuchMethodException
标签:method 元素 结果 ext res node acl string 判断
原文地址:https://www.cnblogs.com/axibug/p/14852057.html