2014-01-09 35 views
0

我遇到了Eclipse Run on Server功能的奇怪行爲。我的環境:Eclipse將WebContent文件夾的內容部署到WEB-INF文件夾。

  • Eclipse Kepler SR 1, WTP
  • Apache Tomcat 7.0.37

我在Eclipse兩個動態Web項目 - ProjectAProjectB。兩者都有一個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呢?任何想法?

回答

0

<wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/> 

告訴WST來打包源/ WEB-INF/classes中,這就是你不想因爲這是一個lib什麼項目。將其更改爲:

<wb-resource deploy-path="/" source-path="/src"/> 

將執行此操作。

相關問題