一、哪类工程不能识别
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 中
如图: