JBoss問題引發讓我懂得要Clean項目

最近公司的項目都在從WS上面往JBoss上面遷移,由於之前的項目很多技術都依賴WS,所以改動很大。近期我負責的就是WebService的模塊的改動。新的項目完全脫離WS發佈在Tomcat上面完全沒有問題,可是一放到JBoss上面問題出現一大堆。

javax.servlet.ServletException: java.lang.LinkageError: loader constraint violation: loader (instance of org/jboss/web/tomcat/service/WebCtxLoader$ENCLoader) previously initiated loading for a different type with name "javax/xml/soap/AttachmentPart"
	org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:298)
	org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194)
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	com.zhx.zhb.application.common.pageFilter.RequestEncodeConversionFilter.doFilter(RequestEncodeConversionFilter.java:20)
	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

看上面是JBoss和項目中某個類發生了衝突,我查找這個類發現JDK1.6、JavaEE5.0和項目中的一個WS的jar包中存在這個類,我先將jar包刪除了,但是發現項目還是有問題,隨後我將JavaEE和JDK中的類也刪除了,項目還是報上面的錯誤,我又將JDK和JavaEE中刪除的類復原,將JBoss中的衝突類刪除,發現JBoss無法正常啓動。沒有辦法,上網查了很多的資料,很多都說JDK和JBoss裏面的jar包衝突,需要把JBoss中的jar放到jre的bin的endorsed文件夾中,可是還是不好使,整整困擾了我兩天,真的到崩潰的邊緣了。

後來忽然想爲什麼將JDK和JavaEE還有WS的jar包刪除了項目還是會報這個問題,難道其他地方還有這個類,我查找了整個項目發現沒有了,那是爲什麼,忽然之間想到是不是刪除了jar包之後,項目沒有重新編譯呢,爲了測試自己的猜想,我手動重新編譯了一下項目,發現真的沒問題了。原因就是WS的jar包刪除之後,Myeclipse因爲某些原因沒有自動重新編譯才造成的。和JDK、JavaEE裏面的類沒有關係。

所以,小夥伴們兒,如果你的項目出現了問題,而你也在崩潰的邊緣了,不妨試一下我的方法重新編譯一下項目,可能就豁然開朗了,問題很有可能就是開發工具因爲某些原因在你重改項目的時候沒有重新編譯。

圖 1.0


圖 2.0


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章