BeanUtils Exception 之 FastHashMap
这里仅仅是为了记录一件十分奇怪的事情,在使用BeanUtils的过程中,所有的依赖包都添加了,
- common logging
- common collections
- ···
在为boolean 这种基本的数据类型添加Property的时候,然而还是出现了:
java.lang.ClassNotFoundException: org.apache.commons.collections.FastHashMap
然后我就开始了Bug寻找之路,如下。
第一步
一开始我以为是转换类没有做好,然后尝试着在其帮助文档中搜索相关的转换类。
BooleanConverter
: 看起来貌似是我想要的,于是在
BeanUtils.setProperty(bean,name,value)
之前注册了一个
ConvertUtils.register(new BooleanConverter(),java.lang.Boolean.class)
然后还是失败了!
第二步
既然自带的转换器不能正常的工作,那我就尝试着写一个自定义的转换器吧。按照官网上的步骤,需要:
ConvertUtils.register(new Converter(){
@Override
public Boolean convert(Class type, Object value) {
return (Boolean)value;
}
}, java.lang.Boolean.class);
然后继续运行,发现,仍然很尴尬的失败了。
第三步
根据异常提示,是由于
java.lang.ClassNotFoundException: org.apache.commons.collections.FastHashMap
然后就去找吧,最后竟然在更低版本的BeanUtils包里面给找到了。真的是很尴尬的一件事,然后就能正常的运行了。3.2版本的BeanUtils包下载地址。
我的测试代码如下:
package beanutils;
import java.util.Date;
public class MyBean {
private String name;
private int age;
private Date birthday;
private boolean isAlive;
public MyBean() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public boolean isAlive() {
return isAlive;
}
public void setAlive(boolean isAlive) {
this.isAlive = isAlive;
}
}
package beanutils;
import java.util.Date;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;
import org.apache.commons.beanutils.converters.BooleanConverter;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
import org.junit.Test;
public class TestMyBean {
/**
* 首先测试的是基本的数据类型
*
* @throws Exception
*/
@Test
public void test1() throws Exception {
String name = "Mark";
int age = 20;
boolean isAlive = true;
MyBean myBean = new MyBean();
BeanUtils.setProperty(myBean, "name", name);
BeanUtils.setProperty(myBean, "age", age);
// 对于boolean貌似不能进行转换
// BeanUtils.setProperty(myBean, "isAlive", isAlive);
System.out.println("Print the result by BeanUtils");
System.out.println("Name:" + myBean.getName());
System.out.println("Age:" + myBean.getAge());
System.out.println("IsAlive:" + myBean.isAlive());
}
/**
* 对Date进行转换测试
*
* @throws Exception
*/
@Test
public void test2() throws Exception {
String date = "2016-07-05";
ConvertUtils.register(new DateLocaleConverter(), Date.class);
MyBean myBean = new MyBean();
BeanUtils.setProperty(myBean, "birthday", date);
System.out.println("Birthday:" + myBean.getBirthday());
}
/**
* 测试boolean类型的数据
*
* @throws Exception
*/
@Test
public void test3() throws Exception {
boolean isalive = true;
ConvertUtils.register(new BooleanConverter(), Boolean.class);
MyBean myBean = new MyBean();
BeanUtils.setProperty(myBean, "isAlive", isalive);
System.out.println("IsAlive:" + myBean.isAlive());
}
}
最后一点
在测试Date这个数据类型的时候买也是出现了一点错误。调试了很久也没能找到错误,最后发现时导包的时候导错了。因为Date应该导java.util.Date
而不是java.sql.Date
.
希望大家引以为戒。虽然导包是个老生常谈的问题,但是还是应该注意一下吧在导包的时候注意一下。
BeanUtils Exception 之 FastHashMap的更多相关文章
- java.lang.ClassNotFoundException: org.apache.commons.collections.FastHashMap
七月 26, 2017 1:52:15 上午 org.apache.catalina.core.StandardWrapperValve invoke严重: Servlet.service() for ...
- java jdbc的优化之BeanUtils组件
1. BeanUtils组件 1.1 简介 程序中对javabean的操作很频繁, 所以apache提供了一套开源的api,方便对javabean的操作!即BeanUtils组件. BeanUtils ...
- BeanUtils
BeanUtils包的使用 BeanUtils工具包是由Apache公司所开发,主要是方便程序员对Bean类能够进行简便的操作. 在使用BeanUtils工具包之前我们需要的Jar包有以下几种: ...
- BeanUtils.copyProperties()方法和PropertyUtils.copyProperties()的区别
首先两者来源于同一个包: import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.Prop ...
- 内省、JavaBean、PropertyDescriptor类、Introspector类、BeanUtils工具包、注解、Rentention、Target、注解的基本属性和高级属性
本文转载自:http://blog.sina.com.cn/s/blog_5d65a16901011kom.html 关键字:内省.JavaBean.PropertyDescriptor类.Int ...
- BeanUtils: 威力和代价(转载)
转自:http://blog.sina.com.cn/s/blog_ab3fbf1b0101jbxz.html Apache Jakarta Commons项目非常有用.我曾在许多不同的项目上或直接或 ...
- java转换json需要导入的jar包,org/apache/commons/lang/exception/NestableRuntimeException
缺少相应jar包都会有异常,根据异常找jar包导入...... 这里我说下lang包,因为这个包我找了好半天: 我用的是: commons-lang3-3.1.jar 出现异常: jav ...
- 使用beanUtils操纵javabean
Sun公司的内省API过于繁琐,所以Apache组织结合很多实际开发中的应用场景开发了一套简单.易用的API操作Bean的属性——BeanUtils,在Beanutil中可以直接进行类型的自动转换. ...
- [新手学Java]使用beanUtils控制javabean
使用BeanUtils设置/读取属性的值以及默认支持的自动转化: @Test //使用BeanUtils设置/读取属性的值以及自动转化 public void test1() throws Illeg ...
随机推荐
- Log4j1.2配置详解
Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志的输出到控制台,或者文件等等. 同时,在各大框架中也主要是使用log4j来进行日志的输出. 下面是log4j1.x版本的详细 ...
- [BZOJ]2017省队十连测推广赛1
听学长说有比赛就随便打一打. A.普通计算姬 题目大意:给出一棵带权树,支持一下两种操作:1.修改一个点的权值:2.给出l,r,询问以点l为根的子树和.点l+1为根的子树和.点l+2为根的子树和--点 ...
- bzoj2434阿狸的自动机
转载自 http://www.cnblogs.com/zj75211/p/6934976.html ●BZOJ 2434: [Noi2011]阿狸的打字机 ●赘述题目 (题意就不赘述了) ●解法: ...
- BigData-‘基于代价优化’究竟是怎么一回事?
本文由 网易云发布. 本文具体讨论了Join基础算法的一种优化方案 – Runtime Filter,在本文最后还引申地聊了聊谓词 下推技术.同时,在本文文章开头,笔者引出了两个问题,SQL执行引 ...
- SQL Server 2008作业失败无法确定所有者是否有服务器访问权限
调用作业---错误提示内容 该作业失败. 无法确定所有者 WIN-3TH1KNIT12D\Administrator (拥有作业 Database_Backup.step1)是否有服务器访问权限 (原 ...
- 从JVM角度看i++ 与++i
1.i++和++i的问题 反编译结果为 Code: 0: iconst_1 1: istore_1 2: iinc 1, 1 //这个个指令,把局部变量1,也就是i,增加1,这 ...
- sqlserver 取日期年份月份
select convert(varchar(10),datepart(YYYY,a.fssj)) as years,--得到年份convert(varchar(10),datepart(mm,a.f ...
- jdk1.7和jdk1.8区别
转自:http://www.2cto.com/kf/201307/225968.html 本文是我学习了解了jdk7和jdk8的一些新特性的一些资料,有兴趣的大家可以浏览下下面的内容. 官方文档:ht ...
- C# ref与out
ref参数是引用,out参数为输出参数.我写一个控制台的程序来说明一下两者的特点和区别: class Program { 3 public static void RefMethod( ref int ...
- 排序分析函数中对null的处理
--排序分析函数中对null的处理 --分析:对于null在分析函数中是升序默认是nulls last,降序默认是nulls first.如果不指定排序,那么是升序 )); ,'测试1'); ,'测试 ...