一、在server視圖右鍵選擇Add and Remove時,如果想要部署的項目不在左側的待選列表中,或是彈出警告There are no resources that can be added or removed from the server.。那么首先檢查想要部署的項目是否open。如果沒有,open project之后再試試。
二、若還是不行,則右鍵項目-->properties-->Projects Facets把下圖的三個勾給打上。點擊確定等待重新編譯,編譯完成且未出現警告的話,再重新試試.選擇Dynamic Web Module的版本時,應根據dynamic web module和對應的TOMCAT 版本來設定。如果剛開始時候設置錯了,則修改。
三、這時,如果項目未包含有WebContent文件夾,那么eclipse會自動創建WebContent文件夾,並將WebContent文件夾作為默認的讀取lib以及jsp的路徑,這時problems視圖里會出一大堆錯,因為編譯器找不到lib包了。下圖中的Web App Libraies就是從WebContent文件夾中加載的。
這時你有兩個選擇,第一個是把你的jsp和lib全部移動到WebContent文件夾中來,使得編譯器能找到(如果是自己一個人的項目可以這么做,如果是多人協作的svn項目不推薦這么做)。第二個選擇是重新配置部署路徑,右鍵工程properties-->Deployment Assembly,remove掉/WebContent,然后add你自己的文件夾。比如我的項目放置lib和jsp以及各種資源的文件夾是web,那么add Folder 選擇web,點擊finish即可。如下圖:
需要注意的是,即使第三步編譯不報錯,啟動tomcat時也不一定能加載得到項目。因為有些項目的jar包可能不是從Web App Libraies里加載的,而是直接通過Add External JARS來加載的。這時候eclipse編譯是沒問題了,但tomcat加載時依然加載不到jsp以及lib、WEB_INF等等資源文件。因為tomcat啟動時仍然是根據Deployment Assembly來尋找jsp以及lib、WEB_INF等等資源文件的。如果找不到,tomcat啟動是正常的,但是你想要部署的項目不會被部署到tomcat上。
四:啟動tomcat,如果能在瀏覽器中訪問應用則說明加載成功。如果不能,則去看看有tomcat加載文件時有哪些文件漏掉了?如下圖:
或者打開D:\eclipseWorkSpace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\conf\server.xml,查看<Context>標簽下的路徑,在我的電腦中打開此路徑。
如果能在打開的文件夾中看到文件和ecplise中的一一對應,那么就說明加載成功了。左圖中的WEB_INF文件夾里應包含classes文件夾,並且內容和右圖中的build下的classes里的一致。(因為我的eclipse編譯路徑設為ccegp/build/classes,不是ccegp/web/WEB_INF/classes)
如果不是一一對應,重新啟動一下tomcat,留意一下控制台輸出。再不行可能得重啟一下eclipse。因為有些時候配置不是立刻生效的。
參考:http://stackoverflow.com/questions/75786/eclipse-how-can-i-change-a-project-facet-from-tomcat-6-to-tomcat-5-5