關於Tomcat 不能識別 Eclipse工作區間 Java web 工程
一、哪類工程不能識別
a) 普通java 項目
b) MyEclipse 下建立的 Web 專案
c) Eclipse 下建立的Web 專案(受損的)
二、Eclipse 內切 Tomcat 識別和部署 Web 專案的關鍵點
所有工程都有一個用來標識自己的檔案 (.project)
在eclipse 下,建立 Web 專案時會自動產生一個 .settings 檔案夾,裡面檔案如下
這裡面的檔案各有各的作用,尤其是以下兩個檔案:
檔案:org.eclipse.wst.common.project.facet.core.xml
內容:
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<runtime name="Apache Tomcat v5.5"/>
<fixed facet="jst.java"/>
<fixed facet="jst.web"/>
<installed facet="jst.java" version="6.0"/>
<installed facet="jst.web" version="2.4"/>
<installed facet="wst.jsdt.web" version="1.0"/>
</faceted-project>
註:該檔案標識工程的性質,也是Tomcat 識別該項目的一個標識性檔案
檔案: 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_eclipse">
<wb-resource deploy-path="/" source-path="/WebRoot"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
<property name="context-root" value="test_eclipse"/>
<property name="java-output-path" value="/WebRoot/WEB-INF/classes"/>
</wb-module>
</project-modules>
分析:
<wb-module deploy-name="test_eclipse">
這裡說的是,這個工程部署到web 容器中的名稱為:“test_eclipse”
<wb-resource deploy-path="/" source-path="/WebRoot"/>
wb-resource 表示web 工程運行所要的資源
<property name="context-root" value="test_eclipse"/>
context-root 表示在web 容器裡面該項目的根目錄為 “test_eclipse”
property name="java-output-path" value="/WebRoot/WEB-INF/classes"/>
這裡的意思是指的是java 編譯產生的檔案存放的路徑
註: 將Eclipse 中 Web 專案部署到 Tomcat 中所載入的資源就是通過該檔案制定的
三、總結
讓Tomcat 識別Web 專案的關鍵點
1、 工程中有 .settings, 且檔案夾中存在org.eclipse.wst.common.project.facet.core.xml 檔案
2、 在工程的 .project 檔案中加入如下內容:
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
.project內容
做到這兩點就能夠讓 Tomcat 識別到 Eclipse工程了
部署工程到Tomcat 容器
一句話:工程運行所需呀的資源都需要指定在org.eclipse.wst.common.component檔案中
如:
假如工程目錄結構如下:
那麼需要修改org.eclipse.wst.common.component檔案如下,以用來將 lib/log4j 下面的jar包部署到Tomcat 中