ITPub博客

首页 > 应用开发 > IT综合 > Quartz 整合到SSH时找不到方法SetUtils.orderedSet错误解决办法

Quartz 整合到SSH时找不到方法SetUtils.orderedSet错误解决办法

原创 IT综合 作者:xuniji123 时间:2008-04-11 15:49:29 0 删除 编辑

在原有项目中添加Quartz1.6时总报错如下(如图一所示):

java.lang.NoSuchMethodError: org.apache.commons.collections.SetUtils.orderedSet(Ljava/util/Set;)Ljava/util/Set;

原系统是整合Struts2.0.11.1+Spring2.5.2+Hibernate3.2.6GA,在MyEclipse5.5GA下开发的,集成了DWR2.0.3

[@more@]

Quartz 整合到SSH时找不到方法SetUtils.orderedSet错误解决办法

在原有项目中添加Quartz1.6时总报错如下(如图一所示):

java.lang.NoSuchMethodError: org.apache.commons.collections.SetUtils.orderedSet(Ljava/util/Set;)Ljava/util/Set;

原系统是整合Struts2.0.11.1+Spring2.5.2+Hibernate3.2.6GA,在MyEclipse5.5GA下开发的,集成了DWR2.0.3

图一

问题原因:

不能找到方法org.apache.commons.collections.SetUtils.orderedSet,是由于整合Struts2.0.11.1Spring2.5.2Hibernate3.2.6GA时,加入的包是commons-collections-2.1.1.jar,该包的确不含此方法。

解决办法:

加入比较新的包commons-collections-3.1.jar,此包在下载的quartz-1.6.0libcore下能找到。

即使这样也还是报同样的错。

于是我将之前的commons-collections-2.1.1.jar包删除,只留下ommons-collections-3.1.jar,重启Eclipse也还是报错。

是不是运行环境中有commons-collections的低版本存在,系统默认去其中寻找。

于是在Tomcatlib中找commons-collections,没有。

会在哪里呢?

是不是在MyEclipse中的HibernateSpringStruts中有低版本的commons-collections呢?

于是在MyEclipse界面,Window->Preferences…->MyEclipse->Project Capabilities下(如图二所示)的HibernateSpringStruts中去找,一一删除了所有的commons-collections包。结果还是报错。

图二

于是重建一个空项目,只加quartz-1.6.0libcore下的包到项目中,运行example,不报错。确定了原Quartz实例没问题。

难道就是HibernateSpringStruts中某个包的问题。排除法。

依次去掉HibernateSpringStruts,没去掉一个,运行一次,还是报错。排除是有三者引起的错误。

会不会是其他包引起的,继续排除法:

去掉有关DWR的包,还是报错。

去掉所有a开头的包(打算按字母顺序来排除),报错。

到去掉所有c开头的时,报错变了,是必定了,应为没logcommons-logging.jar,加入,又报另外的错,显然还没加commons-collections包,这次,直接只加commons-collections-3.1.jar包,运行,终于没有报错了。

在反过来依次加入之前删除的包,看究竟是加什么包时出错。

加入所有之前c开头的包,包括commons-collections-2.1.1.jar,没有错。

加入a开头的所有包,没错。

一直把原先的所有包都加回去了,都没报错。奇怪了。

难道跟加包的顺序有关?

于是保存了现在的lib包。

将以前项目的lib(不包含quartz-1.6.0libcore下的包)包重新考到现在的项目。再把quartz-1.6.0libcore下的包全部加入现在的项目。同样出错。

之前不是猜测放包的顺序有关吗?

在前面的包先读取,后面的包后读取。那就应该让commons-collections-3.1.jarcommons-collections-2.1.1.jar先被取才对。

于是在项目上右键Properties->Java Build Path->Order and Export,整理包的先后顺序。

如图三所示,由于新加入的包commons-collections-3.1.jar在最后。

图三

选中commons-collections-3.1.jar,点击Up,一直到超过commons-collections-2.1.1.jar

如图四所示。

图四

OK保存,执行,还是报错。

难道不是这个原因?

或者其前面还有包被先读取?

继续Up提升commons-collections-3.1.jar的位置。一直到如图五所示。

图五

已经在所有包前面了,不该有问题了吧。

OK保存,执行,终于成功。

问题解决了。

但究竟是哪个包引起的还是不清楚,在此也不去找了,要么再继续遍历所有包验证。或者在最顶端和commons-collections-2.1.1.jar之间Up and Downcommons-collections-3.1.jar的顺序,每调整一次,执行一次,直到找到在正确与错误的分界位置,以找到问题包。

所以解决的办法就一句话:

让包commons-collections-3.1.jar先于其他所有包被读取即可。调整Properties->Java Build Path->Order and Export到如图五所示状态即可。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8271432/viewspace-1002329/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    44
  • 访问量
    436651