我的解決方案是:
不用xwork-2.1.6.jar,換xwork-2.1.2.jar!
JSP頁面裡引入了struts標籤庫:<%@taglib prefix="s" uri="/struts-tags"%>
寫個簡單的form,
<div><s:form action=""><s:textfield name="username" label="使用者名稱"></s:textfield><s:textfield name="password" label="密 碼"></s:textfield><s:submit value="login"></s:submit></s:form></div>
結果運行後JSP出錯:java.lang.ClassNotFoundException: com.opensymphony.xwork2.util.TextUtils
從字面上看,已經知道原因了:找不到TextUtils這個類導致的。
看一下代碼,沒錯誤吧。OK,代碼沒錯,那就是其他代碼問題了!對象只有一種可能:引入的jar包出問題了。
網上查查都說是jar包衝突的問題。xwork-2.1.6.jar裡已經去掉了TextUtils!!!OK,你不可能去下載這個class手動加進來吧?那就用現成的最安全。目標鎖定在xwork-2這個jar包上,那就看看這個jar的版本情況吧。Google一下還是得到答案了,TextUtils存在於之前的版本,為神馬高版本的2.1.6去掉了該類那也是很無語的。有人說2.1.8可以,但是還得牽連到json的jar包。如http://blog.csdn.net/foart/article/details/6669836這樣解決的:
在下載好的Struts2的lib檔案夾裡找到了以下jar包:
json-lib-2.x.jar
struts2-json-plugin-2.x.x.jar
struts2-junit-plugin-2.x.x.jar
上面三個包加入項目裡之後,再刪除jsonplugin-0.3x.jar包
我用的是S2SH架構,struts2-core-2.1.6.jar + xwork-2.1.6.jar。
既然xwork-2.1.6.jar已經去掉了TextUtils,那就不能用這個版本了。
個人覺得刪除jsonplugin-0.3x.jar包再換幾個jar包,而且是換的版本基本上都是越來越高。這樣做安全性不高。如果換個環境,並不能保證即使不會再出現這個問題,也許還有其他問題的存在。當然,接下來我的簡單而保守的做法也可能面臨一些版本的問題,給大家分享下。
不用xwork-2.1.6.jar,換xwork-2.1.2.jar!