J2EE Web專案Tomcat跑不起來的一些問題解決過程彙總
一個J2EE的web專案,正式投產環境是weblogic,開發環境是tomcat
但是實際用的過程發現了一些問題,記錄下如何解決這些“奇怪問題”的。
1. 使用run as 居然沒有Run as server可以選,通過server 新增resource也提示沒有可用資源。
解決: 因為專案是從版本庫匯入的,eclipse識別不了該專案是web專案,故有上面的問題。
選中專案 --右鍵屬性 --選擇 project facets --選中 Dynamic Web Module ,確認後eclipse就知道這個web專案了。
2. run as 對應的專案,選中的tomcat是啟動了,但是沒有deploy的過程,即使點選server裡的publish也沒用。
解決: 其實eclipse有執行deploy(部署)的操作,但是沒有人告訴它,部署的規則。
選中專案--右鍵屬性 --選擇Deployment Assembly --可以看到部署的對應結構。
* 有時候專案屬性根本沒有這個項,怎麼辦?
解決:修改專案的 .project 配置檔案 在<natures>下增加
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
3 如果選中Dynamic web project 選擇不能確定,或
tomcat x.x does not support version 2.5 of J2EE specification.....異常,
排除Dynamic web Module於某些項不能同時選擇的異常.
解決方式是
開啟專案根目錄下的.settings在有個名為org.eclipse.wst.common.project.facet.core.xml的檔案,裡面配置有各種版本資訊。此時,按照通常按照如下修改.
在<faceted-project>標籤下修改為
<fixed facet="wst.jsdt.web"/>
<fixed facet="jst.web"/>
<fixed facet="java"/>
<installed facet="java" version="1.6"/>
<installed facet="jst.web" version="2.5"/>
<installed facet="wst.jsdt.web" version="1.0"/>
重啟eclipse,重新在專案下點選左鍵選擇專案屬性 選擇Project facets 選中Dynamic web project ,java,javascript.應該就可以了
4. 編譯沒有問題,每次執行出現一些奇怪的問題,例如一些jndi的問題:Name java: is not bound in this Context 之類的。
解決: 網上有些解釋是tomcat的包衝突,在檢查了幾個包後,把專案依賴的幾個包放到jre runtime資源裡
例如serlvet-api.jar jsp-api.jar等,這樣編譯也不會報錯,執行也沒有出現jndi問題。
5. Tomcat5.5的一些問題:
JDBC不支援 getJDBCMajorVersion等方法。 替換/common/lib/classes12.jar 為 ojbc14.jar
jasperexception type mismatch cannot convert double to Double 之類的。
網上解釋是,因為jdk1.5之前沒有autoboxing 特性,但是檢查好幾遍了jdk版本都是1.6了
最後通過替換 jasper的jar包解決問題。
中間替換後執行時又提示 not found org/apache/juli/logging/logfactory 又替換/bin/tomcat-juli-jar 包解決。