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());
解决结果:成功!
错误等级:低级
*注意事项:无