解決Eclipse環境變量中的Web?App?Libraries下沒有jar包的問題
分類:?疑難問題2011-11-10?14:47?1154人閱讀?評論(0)?收藏?舉報
?????今天幫同事調一個項目,里面滿是類編譯錯誤,一看就是相應的jar包沒有引入,打開build?path->configure?build?path,發現Web?App?Libraries下沒有任何jar包。理應Web?App?Libraries下包含工程目錄\WebContent\WEB-INF\lib下的所有jar包,于是查看了這個目錄,發現這個項目的包目錄是這樣的:工程目錄\src\main\sample\WEB-INF\lib,問題顯然就出在這里了,找了半天,沒有找到在哪里配置這個路徑,最后,在工程目錄的.settings文件夾中org.eclipse.wst.common.component找到了相關配置,原來的配置是這樣的:
<?xml?version="1.0"?encoding="UTF-8"?>
<project-modules?id="moduleCoreId"?project-version="1.5.0">
????<wb-module?deploy-name="test">
????????<wb-resource?deploy-path="/"?source-path="/WebContent"/>
????????<wb-resource?deploy-path="/WEB-INF/classes"?source-path="/src"/>
????????<property?name="context-root"?value="test"/>
????????<property?name="java-output-path"?value="build/classes"/>
????</wb-module>
</project-modules>
修改后變為:
<?xml?version="1.0"?encoding="UTF-8"?>
<project-modules?id="moduleCoreId"?project-version="1.5.0">
????<wb-module?deploy-name="test">
????????<wb-resource?deploy-path="/"?source-path="/src/main/sample/"/>
????????<wb-resource?deploy-path="/WEB-INF/classes"?source-path="/src"/>
????????<property?name="context-root"?value="test"/>
????????<property?name="java-output-path"?value="build/classes"/>
????</wb-module>
</project-modules>
?
?
<此方法可以成功解決WEB-INF/lib/servlet-api.jar?not?loaded.>2012年9月
?
?啟動tomcat后,控制臺輸出信息:WEB-INF/lib/servlet-api.jar?not?loaded.?See?Servlet?Spec?2.3,?section?9.7.2。網上提供的方法一般是:保證WEB-INF/lib跟tomcat6.0?lib下的JAR包與項目的web-inf/lib沒有重復的包即可。所以,將項目的web-inf/lib下的servlet-api.jar刪掉就OK了。
?
??????但是,如果項目中存在使用servlet-api.jar的類怎么辦呢?刪掉servlet-api.jar,源程序無法編譯。could not open hibernate session?這時,有另一個辦法可以解決這樣的沖突問題:把Tomcat6.0t的lib目錄下的名為servlet-api.jar的包拷貝至你的java安裝目錄下jre/lib/ext下就可以了。在myeclipse7.0中再次啟動tomcat6.0就不會再出現前面的輸出信息了。
?
?
<really??!?>
?
其實,對于兩者的包沖突問題,都可以采用類似的方法來解決。
?
<really??!?>
?
?
?
?
另外:
?
?
?
把?webapps\maintenance\WEB-INF\lib\?
下面的?servlet-api.jar?刪掉吧!?tomcat自己有,不需要你提供!?
順便看看其他的jar,?和?tomcat\lib?目錄比較一下,tomcat已經有的,就別留著了!
?
?
eclipse下啟動tomcat出現Setting?property?'source'?to?'org.eclipse.jst.jee.server:?'錯誤的解決辦法?
?
在eclipse中啟動tomcat時出現Setting?property?'source'?to?'org.eclipse.jst.jee.server:你的站點名'???did?not?find?a?matching?property錯誤
?
?
?
解決辦法:
?
1、在server控制臺內,在服務器上點右鍵--屬性
?
2、general選項卡中點switch?location
?
這時,location變為:/servers/tomcat6.0?server?at?localhost.server
?
3、在project?explore中找到tomcat項目--Tomcat?v6.0?Server?at?localhost.server??這個文件?,雙擊打開?
?
4、在最下面的server?option里選中publis?module?context?to?separate?xml?file.保存。(保存時要先停止服務器)
?
?
?
問題完美解決。struts2框架?
<href="http://www.ibm.com/developerworks/opensource/library/os-eclipse-tomcat/">http://www.ibm.com/developerworks/opensource/library/os-eclipse-tomcat/
?
二○一二年九月九日星期日
http://www.ibm.com/developerworks/opensource/library/os-eclipse-tomcat/
?
一個小小的錯誤浪費了兩天(9月11-12)2012年9月12日星期三0時43分23秒
?
原因所致DaoImplBase<T>?
?
?
更改后
?
?
分析原因為:
1、將Class<T>?clazz;這個接受子類的局部變量聲明為了?私有的(private)?本應該為受保護的(protected)protected?Class<T>?clazz;這樣做類型轉換的時候就不需要用泛型clazz=(Class)<T>?pt.getActualTypeArguments()[0];
2、解決?辦法?:
更改?變量屬性為受保護的 protected?Class<T>?clazz;
此處不需要用泛型接受 clazz?=?(Class)?pt.getActualTypeArguments()[0];
經過了一番周折開始老是懷疑jar包問題,最開始總是不能加載user.hbm.xml?實體映射文件
后來通過Debug?斷點測試發現在filter?過濾器中就拋出異常了?,于是繼續跟蹤到?dao層的impl實現類?dao層繼承的是daobase?接口的方法?,跟蹤進去發現程序不能進入save()方法,顧數據不能保存。還有可能是引用了空對象(未關聯Tomcat源碼所致)
?
?
?
?
?