Apache Commonsapache collectionss 3.2.2补丁怎么安装

用spring3调用quartz出现一个常见错误的解决办法
错误呈上:
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'jobTask' defined in class path
resource [applicationContext.xml]: Invocation of init method
nested exception is java.lang.NoSuchMethodError:
mons.collections.SetUtils.orderedSet(Ljava/util/S)Ljava/util/S
由此看见:
mons.collections.SetUtils没有orderedSet(Set)这个方法
首当其冲的念头就是jar包有问题,分析可知:commons-collections的jar包版本过低,因为一般情况下,版本向上市兼容的。
查看该jar包
为:commons-collections-2.1.1.jar(说明:本实例 是通过maven配置的
,制定spring为3.1.2.RELEASE版本后 自动给附带引入的jar)
解决方法:
查看最近版本后得知有3.2.1版本的jar,所以pom配置
加入对应的dependency
&!-- commons-collections
&&&dependency&
&&&&groupId&commons-collections&/groupId&
&artifactId&commons-collections&/artifactId&
&version&3.2.1&/version&
&&&/dependency&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。commons-collections使用介绍之Map - 博客频道 - CSDN.NET
蒋固金(jianggujin)的专栏
骨宜刚、气宜柔、志宜大、胆宜小、心宜虚、言宜实、慧宜增、福宜惜、虑不远、忧亦近
分类:JAVA
介绍完了List,我怕们继续来看commons-collections中为我们提供的Map相关的实现类。
CaseInsensitiveMap
CaseInsensitiveMap是一个对键的大小写不敏感的Map,在将键添加或与其它键比较之前,会将其转换为小写字符串。
使用示例:
package com.gujin.
import mons.collections.map.CaseInsensitiveM
import org.junit.T
public class CaseInsensitiveMapTest
public void test()
CaseInsensitiveMap caseInsensitiveMap = new CaseInsensitiveMap();
caseInsensitiveMap.put("name", "jianggujin");
caseInsensitiveMap.put("NAME", "jianggujin");
System.out.println(caseInsensitiveMap);
System.out.println(caseInsensitiveMap.get("nAme"));
运行结果:
{name=jianggujin}
jianggujin
CompositeMap
CompositeMap修饰另一个Map。添加和移除操作使用可插拔的策略,如果没有提供策略,添加和删除是不支持的。
使用示例:
package com.gujin.
import java.util.C
import java.util.HashM
import java.util.M
import mons.positeM
import mons.positeMap.MapM
import org.junit.T
public class CompositeMapTest
public void test()
CompositeMap compositeMap = new CompositeMap();
compositeMap.addComposited(new HashMap&String, String&());
MapMutator mapMutator1 = new MapMutator()
public void resolveCollision(CompositeMap composite, Map existing,
Map added, Collection intersect)
public void putAll(CompositeMap map, Map[] composited, Map mapToAdd)
public Object put(CompositeMap map, Map[] composited, Object key,
Object value)
return composited[0].put(key, value);
MapMutator mapMutator2 = new MapMutator()
public void resolveCollision(CompositeMap composite, Map existing,
Map added, Collection intersect)
public void putAll(CompositeMap map, Map[] composited, Map mapToAdd)
public Object put(CompositeMap map, Map[] composited, Object key,
Object value)
return composited[0].put(key.toString().toUpperCase(), value);
compositeMap.setMutator(mapMutator1);
compositeMap.put("name", "jianggujin");
compositeMap.setMutator(mapMutator2);
compositeMap.put("name", "JIANGGUJIN");
System.out.println(compositeMap.get("name"));
System.out.println(compositeMap.get("NAME"));
运行结果:
jianggujin
JIANGGUJIN
DefaultedMap
DefaultedMap修饰另一个Map,当使用get方法时,如果键不存在,将返回默认对象。
使用示例:
package com.gujin.
import mons.collections.map.DefaultedM
import org.junit.T
public class DefaultedMapTest
public void test()
DefaultedMap defaultedMap = new DefaultedMap("NULL");
defaultedMap.put("name", "jianggujin");
System.out.println(defaultedMap);
System.out.println(defaultedMap.get("NAME"));
运行结果:
{name=jianggujin}
FixedSizeMap
FixedSizeMap修饰另一个Map防止添加/删除并且固定Map大小。仅允许对已有的键进行值的修改,影响到Map大小的操作都是不被支持的。
使用示例:
package com.gujin.
import java.util.HashM
import mons.collections.map.FixedSizeM
import org.junit.T
public class FixedSizeMapTest
public void test()
HashMap&String, String& src = new HashMap&String, String&();
src.put("name", "jianggujin");
FixedSizeMap fixedSizeMap = (FixedSizeMap) FixedSizeMap.decorate(src);
fixedSizeMap.put("name", "121");
System.out.println(fixedSizeMap);
运行结果:
{name=121}
IdentityMap
IdentityMap提供了一个Map的实现,与其他Map不同的是,在IdentityMap中匹配键和值是通过==而不是equals()。
使用示例:
package com.gujin.
import mons.collections.map.IdentityM
import org.junit.T
public class IdentityMapTest
public void test()
IdentityMap identityMap = new IdentityMap();
String key1 = "name";
String key2 = new String("name");
identityMap.put(key1, "jianggujin");
System.out.println(identityMap);
System.out.println(identityMap.get(key1));
System.out.println(identityMap.get(key2));
运行结果:
{name=jianggujin}
jianggujin
LazyMap修饰另一个Map。当执行get()方法时,如果键值不存在,则返回工厂创建的对象。
使用示例:
package com.gujin.
import java.util.HashM
import mons.collections.F
import mons.collections.map.LazyM
import org.junit.T
public class LazyMapTest
public void test()
Factory factory = new Factory()
public Object create()
return "NULL";
LazyMap lazyMap = (LazyMap) LazyMap.decorate(
new HashMap&String, String&(), factory);
lazyMap.put("name", "jianggujin");
System.out.println(lazyMap);
System.out.println(lazyMap.get("hello"));
运行结果:
{name=jianggujin}
LinkedMap实现了一个可维护顺序的Map,键的顺序为插入的顺序。
使用示例:
package com.gujin.
import mons.collections.map.LinkedM
import org.junit.T
public class LinkedMapTest
public void test()
LinkedMap linkedMap = new LinkedMap();
for (int i = 0; i & 10; i++)
linkedMap.put("key" + i, "value" + i);
System.out.println(linkedMap);
String key = "key5";
System.out.println(linkedMap.previousKey(key));
System.out.println(linkedMap.nextKey(key));
System.out.println(linkedMap.indexOf(key));
运行结果:
{key0=value0, key1=value1, key2=value2, key3=value3, key4=value4, key5=value5, key6=value6, key7=value7, key8=
value8, key9=value9}
MultiKeyMap
MultiKeyMap实现了一个允许多个键的Map,允许将多个键关联到一个值上。
使用示例:
package com.gujin.
import mons.collections.map.MultiKeyM
import org.junit.T
public class MultiKeyMapTest
public void test()
MultiKeyMap multiKeyMap = new MultiKeyMap();
multiKeyMap.put("name", "NAME", "jianggujin");
System.out.println(multiKeyMap);
System.out.println(multiKeyMap.get("name"));
System.out.println(multiKeyMap.get("NAME"));
System.out.println(multiKeyMap.get("name", "NAME"));
运行结果:
{MultiKey[name, NAME]=jianggujin}
jianggujin
MultiValueMap
MultiValueMap允许一个键关联多个值。
使用示例:
package com.gujin.
import java.util.ArrayL
import mons.collections.map.MultiValueM
import org.junit.T
public class MultiValueMapTest
public void test()
MultiValueMap multiValueMap = new MultiValueMap();
ArrayList&String& list = new ArrayList&String&();
list.add("value1");
list.add("value2");
list.add("value3");
list.add("value4");
multiValueMap.putAll("key", list);
System.out.println(multiValueMap);
System.out.println(multiValueMap.get("key"));
运行结果:
{key=[value1, value2, value3, value4]}
[value1, value2, value3, value4]
PredicatedMap
PredicatedMap修饰另一个Map。在添加数据的时候进行校验。可参考上一篇博客中的用法。
ReferenceMap
ReferenceMap使用软引用的方式维护数据,允许数据被垃圾收集器清理。
ReferenceIdentityMap
ReferenceIdentityMap结合了IdentityMap和ReferenceMap,使用软引用维护数据并且使用==匹配数据。
TransformedMap
TransformedMap修饰另一个Map,在添加数据时,先对键和值进行转换。
TypedMap修饰另一个Map,限定了键和值的数据类型。
UnmodifiableMap
UnmodifiableMap修饰另一个Map,使其不允许被修改。
jianggujin
排名:第4563名
为了方便学习交流,创建了一个交流群,欢迎加入,共同进步,加群请表明身份。
(132)(11)(11)(3)(2)(1)(4)(10)(3)(4)(5)Commons-collections 3.2.2 发布
Collections 3.2.2 版本是个安全和 bug 修复版本,此外通过标准 Java 对象序列化几只减缓一个已知远程代码执行(COLLECTIONS-580)。建议所有用户升级到最新版本!详细改进内容请看。
Commons项目组中的一个各种集合类和集合工具类的封装
Commons-collections 的详细介绍:
Commons-collections 的下载地址:
转载请注明:文章转载自 开源中国社区
本文标题:Commons-collections 3.2.2 发布
本文地址:
引用来自“zigzagroad”的评论来自乌云的分析报告: http://drops.wooyun.org/papers/10467 很遗憾地告诉大家,本次更新实际上并没有真实地修复该反序列化安全漏洞,仅是增加了安全检查。(由于字数限制)详情请见博文
来自乌云的分析报告: http://drops.wooyun.org/papers/10467}

我要回帖

更多关于 org.apache.commons 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信