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。
[@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.1、Spring2.5.2、Hibernate3.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的低版本存在,系統預設去其中尋找。
於是在Tomcat的lib中找commons-collections,沒有。
會在哪裡呢?
是不是在MyEclipse中的Hibernate、Spring、Struts中有低版本的commons-collections呢?
於是在MyEclipse介面,Window->Preferences…->MyEclipse->Project Capabilities下(如圖二所示)的Hibernate、Spring、Struts中去找,一一刪除了所有的commons-collections包。結果還是報錯。
圖二
於是重建一個空專案,只加quartz-1.6.0libcore下的包到專案中,執行example,不報錯。確定了原Quartz例項沒問題。
難道就是Hibernate、Spring、Struts中某個包的問題。排除法。
依次去掉Hibernate、Spring、Struts,沒去掉一個,執行一次,還是報錯。排除是有三者引起的錯誤。
會不會是其他包引起的,繼續排除法:
去掉有關DWR的包,還是報錯。
去掉所有a開頭的包(打算按字母順序來排除),報錯。
到去掉所有c開頭的時,報錯變了,是必定了,應為沒log包commons-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.jar在commons-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 Down包commons-collections-3.1.jar的順序,每調整一次,執行一次,直到找到在正確與錯誤的分界位置,以找到問題包。
所以解決的辦法就一句話:
讓包commons-collections-3.1.jar先於其他所有包被讀取即可。調整Properties->Java Build Path->Order and Export到如圖五所示狀態即可。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8271432/viewspace-1002329/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【git】Git commit時提示錯誤時 解決辦法GitMIT
- SAP錯誤提示解決辦法
- dns錯誤怎麼辦 dns錯誤的解決辦法DNS
- ~/.ssh目錄找不到解決方法
- unity player 顯示播放錯誤時的解決辦法Unity
- CATIA許可證時間錯誤的解決辦法
- 連線oracle錯誤解決辦法Oracle
- nginxFastCGI錯誤Primaryscriptunknown解決辦法NginxAST
- Unable to locate package錯誤解決辦法Package
- oracle 1455 錯誤解決辦法Oracle
- 畢設之錯誤解決辦法
- Eclipse除錯找不到源的解決辦法Eclipse除錯
- pecel install swoole 報錯 ssl.h 找不到時的解決辦法
- Idea編譯錯誤解決辦法Idea編譯
- PHP編譯錯誤及解決辦法PHP編譯
- scp出現錯誤的解決辦法
- samba一個錯誤的解決辦法!Samba
- ORA-29339錯誤解決辦法
- ORA-54013錯誤解決辦法
- clamd socket找不到錯誤解決
- nagios check_mysql錯誤,找不到libmysqlclient.so.18的解決辦法iOSMySqlIBMclient
- SSH 連線卡頓解決辦法
- iOS路上遇到的錯誤及解決辦法iOS
- ubuntu下import matplotlib錯誤解決辦法UbuntuImport
- ORA-12705,錯誤的解決辦法
- OpenCV1.0編譯錯誤解決辦法OpenCV編譯
- Xamarin提示安裝包錯誤解決辦法
- ORA-32004錯誤解決辦法
- SPFILE引數修改錯誤的解決辦法
- ORA-12170錯誤的解決辦法
- ORA-01846錯誤解決辦法
- Mysql出現連線錯誤解決辦法MySql
- PHP編譯安裝時常見錯誤解決辦法,php編譯常見錯誤PHP編譯
- Ubuntu 安裝包時提示錯誤E: Unable to locate package mysql-server錯誤 解決辦法UbuntuPackageMySqlServer
- SSH在呼叫Service時獲取為空-解決辦法
- Steam錯誤程式碼138怎麼辦?無法訪問社群提示138錯誤解決方法
- Mysql5.7錯誤日誌時間不對的解決辦法MySql
- 時區錯誤導致oracle的EM不能啟動解決辦法Oracle