解析Myeclipse项目下的.classpath文件
<classpathentry kind="src" path="src"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="con" path="melibrary.com.genuitec.eclipse.j2eedt.core.MYECLIPSE_JAVAEE_5_CONTAINER"/> <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/bsf-2.3.0.jar"/> <classpathentry kind="output" path="WebRoot/WEB-INF/classes"/> 1. <classpath kind="src" path="src"> 对应的是source folder类型的目录, kind---表示这个classpath的类型,path表示在项目中的路径, path使用根目录的相对路径(相对.classpath文件本身的相对路径) , myeclipse项目中的src本身就是一个source folder,所以它会自动写入这个文件中, 如果自己手动建立了一个source folder,这个folder也会写入这个文件, 形式就是以上形式eg.在项目基础上新建一个test的source folder, 就会就会成为这样: <classpathentry kind="src" path="src"/> <classpathentry kind="src" path="test"/></pre><br> 2. <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> 这句是表示程序的运行环境 kind="con"---表示classpath的类型, con即是container,就是程序运行的容器,或者就说是运行环境也OK, 它实际上是在Myeclipse最初的时候要配置installed JREs中指定(一般情况下我们指定的是JDK), 但是这里实际使用的是JDK下的JRE中的jar包,就是JDK_HOME/jre/lib就是对应的这条语句 3. <classpathentry kind="con" path="melibrary.com.genuitec.eclipse.j2eedt.core.MYECLIPSE_JAVAEE_5_CONTAINER"/> 这句是kind="con"当然和上条一样,是表示运行时的容器, 一般情况下是java web项目才会有,它是包含了J2EE服务器要使用到的一些jar包, 这个目录中的jar包是其中最特殊的,那就是它不会在部署项目的时候部署到服务器上去, 因为myeclipse认为这样的jar包是服务器应该有的,所以这里有时候会出现问题, 就是开发的时候不出现问题,但是部署之后会出错,就是有的服务器有的jar包并没有提供, 比如tomcat(因为tomcat并不是专业的web服务器,它只是一个轻量的web容器),这就要区分好开发环境和运行环境 4. <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/bsf-2.3.0.jar"/> 这条语句kind="lib",对应的是classpath中的库文件,path指定库文件的路径, 同样是相对与项目根目录的相对路径 5. <classpathentry kind="output" path="WebRoot/WEB-INF/classes"/> 这条表示项目的输出目录,整个之前定义的classpath无论是kind='src",kind="con",kind="lib", 在编译后都会进入到这个目录中来,在java web中也就是WebRoot/WEB-INF/classes。 同样使用的path是相对项目根目录的相对路径(相对.classpath文件本身的相对路径), 但是由于J2EE部分的是本身要求web 服务器本身要有那些jar包,所以那个例外不会进行拷贝 classpath是myeclipse重要文件,在进行相关的查找时候要用到 项目根目录下的".classpath“文件就是保存项目classpath的文件 文件中的 <classpath>... ...</classpath>之间保存各种classpath信息, kind表示类型,path表示路径,且使用的都是相对于”.classpath“或者说是项目根目录的相对路径 几种kind的含义 kind=”src" ----对应source folder目录 kind="con"--项目的容器,一般当是java web项目的时候会有两个 kind="lib"---项目中使用到的库文件 kind='output"--输出目录,最终编译后相关文件的目标目录,myeclipse会自动完成相关的拷贝 最终对于myeclipse的classpath的管理都是通过这个文件实现
myeclipse项目中的.classpath文件: <?xml version=”1.0” encoding=”UTF-8”?> <classpath> <!-- 源码目录 --> <classpathentry kind=”src” path=”src”/> <!-- JDK运行时容器 --> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="con" path="melibrary.com.genuitec.eclipse.j2eedt.core.MYECLIPSE_JAVAEE_5_CONTAINER"/> <!-- 以下为类库path为你自定义的目录,jar文件的路径 --> <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/sino-base-1.3.2.jar"/> <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/sino-bms-1.4.3.jar"/> <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/sino-frame-1.2.2.jar"/> <!-- 编译后输出class目录 --> <classpathentry kind="output" path="WebRoot/WEB-INF/classes"/> </classpath> --------------------------------------------------------------------------- .project文件: <?xml version=”1.0” encoding=”UTF-8”?> <projectDescription> <!-- 工程名称 这里定义的name的值如果已经工作空间的其他项目占用了, 当使用myeclipse的import功能导入项目时,就会导不进来--> <name>sxVIP</name> <comment></comment> <projects></projects> <!-- 编译器指定--> <buildSpec> <buildCommand> <name>org.eclipse.wst.common.project.facet.core.builder</name> <arguments> </arguments> </buildCommand> </buildSpec> <!-- 核心特性 --> <natures> <nature>org.eclipse.jem.workbench.JavaEMFNature</nature> <nature>com.genuitec.eclipse.ast.deploy.core.deploymentnature</nature> <nature>com.genuitec.eclipse.j2eedt.core.webnature</nature> </natures> </projectDescription> -------------------------------------------------------------------------- 对于myeclipse工程多了一个(web 应用程序才有) .mymetadata文件: <?xml version=”1.0” encoding=”UTF-8”?> <!-- type : 工程类型 name : 工程名称 id : 工程在工作空间内的唯一标识 context-root : 网站根路径 j2ee-spec: J2EE标准 archive : 打包后war文件 --> <project-module type=”WEB” name=”upload” id=”myeclipse.1152954865843” context-root=”/upload” j2ee-spec=”1.4” archive=”upload.war”> <attributes> <!-- value : Web根目录名称 --> <attribute name=”webrootdir” value=”WebRoot” /> </attributes> </project-module>
当为myeclipse的项目修改部署的名字时,
.mymetedata文件中的context-root的值会相应的变化