我遇到了Eclipse Run on Server
功能的奇怪行爲。我的環境:Eclipse將WebContent文件夾的內容部署到WEB-INF文件夾。
Eclipse Kepler SR 1, WTP
Apache Tomcat 7.0.37
我在Eclipse兩個動態Web項目 - ProjectA
和ProjectB
。兩者都有一個index.xhtml
文件(實際上這兩個項目都是JSF項目),直接位於WebContent
文件夾下。當我將它們作爲WAR
文件導出到Tomcat安裝的Tomcat webapps
文件夾時,兩者都運行良好。當我在由Eclipse管理的Tomcat服務器上通過Run on Server
功能運行ProjectA
時,一切都很好。但是當我想通過Run on Server
從Eclipse啓動ProjectB
時,當通過正確的http://localhost:8080/ProjectB/faces/index.xhtml
URL訪問資源時,訪問來自JSF servlet的http://localhost:8080/ProjectB/index.xhtml
錯誤或index.xhtml Not Found in ExternalContext as a Resource
錯誤時,我得到一個404 error
錯誤。 (所有的開始/faces/
的URL匹配於JSF Servlet
在在Eclipse工作區(Tomcat的文件夾<eclipse-workspace>\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
)部署的應用展望揭示了原因:
對於ProjectB
了Eclipse的內容項目WebContent
文件夾已被。部署到WEB-INF
文件夾,而不是在項目部署的根文件夾,當然應用服務器無法找到資源
的問題是 - 爲什麼部署失敗,我怎樣才能避免這種
?我甚至在eclipse中檢查了兩個項目的Deployment Assembly
屬性。兩者都具有相同(默認)的源到目標文件夾映射。這裏是.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="ProfileAndGroupManagementGUI">
<wb-resource deploy-path="/" source-path="/WebContent" tag="defaultRootSource"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
<property name="context-root" value="ProfileAndGroupManagementGUI"/>
<property name="java-output-path" value="/ProfileAndGroupManagementGUI/build/classes"/>
</wb-module>
奇怪,isn't呢?任何想法?