A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李大强 中级黑马   /  2013-2-16 12:13  /  1708 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

麻烦大家给我看看下面的这个程序怎么不能运行啊,写的明明和老师的一模一样(Java基础加强第32节),可就是一直报错,
说没有set和get方法,可是明明有啊,所需的两个工具包我也已经导入并添加到了buildpath里面了啊!


import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import org.apache.commons.beanutils.BeanUtils;

public class JavaBean
{
public static void main(String [] args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, IntrospectionException, NoSuchMethodException
{
Bean bean=new Bean();
bean.setAge(45);

PropertyDescriptor pd = new PropertyDescriptor("age",bean.getClass());
Method methodGetX = pd.getReadMethod();
Object retVal = methodGetX.invoke(bean);
System.out.println(retVal);


BeanUtils.setProperty(bean, "age","9");//为什么此句话不能执行,抛出NoSuchMethodException
     //原句如下:Caused by: java.lang.NoSuchMethodException: Property 'age' has no setter method
System.out.println(BeanUtils.getProperty(bean, "age"));//此句话也不能执行,所没有get方法,可是我明明有啊

}

}
class Bean
{
private int age;



public int getAge() {//我的get方法不是在这里吗?
  return age;
}
public void setAge(int age) {//我的set方法也不是在这里吗?
  this.age = age;
}

}

评分

参与人数 1技术分 +1 收起 理由
职业规划-张琼老师 + 1 神马都是浮云

查看全部评分

1 个回复

倒序浏览
刚开始以为你是导包问题,把你的程序放到myeclipse试了下发现不是。
因为有结果45,所以
麻烦大家给我看看下面的这个程序怎么不能运行啊,写的明明和老师的一模一样(Java基础加强第32节),可就是一直报错,
说没有set和get方法,可是明明有啊,所需的两个工具包我也已经导入并添加到了buildpath里面了啊!


import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import org.apache.commons.beanutils.BeanUtils;

public class JavaBean
{
public static void main(String [] args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, IntrospectionException, NoSuchMethodException
{
Bean bean=new Bean();
bean.setAge(45);

PropertyDescriptor pd = new PropertyDescriptor("age",bean.getClass());
Method methodGetX = pd.getReadMethod();
Object retVal = methodGetX.invoke(bean);
System.out.println(retVal);


BeanUtils.setProperty(bean, "age","9");//为什么此句话不能执行,抛出NoSuchMethodException
     //原句如下:Caused by: java.lang.NoSuchMethodException: Property 'age' has no setter method
System.out.println(BeanUtils.getProperty(bean, "age"));//此句话也不能执行,所没有get方法,可是我明明有啊!

}

}
class Bean
{
private int age;



public int getAge() {//我的get方法不是在这里吗?
  return age;
}
public void setAge(int age) {//我的set方法也不是在这里吗?
  this.age = age;
}
这段代码是对的,不存在疑问;但是为什么会出现NoSuchMethodException?
我把你写的bean类代码提取出来单独写一个类文件,问题依然存在,此时我把bean类加一个public,问题解决
推测问题可能出现在导入的包中,有时候的话你去看下源代码,问题可以得到更清晰的阐述

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马