zoukankan      html  css  js  c++  java
  • eclipse项目中.classpath文件详解

    1 前言

    在使用eclipse或者myeclipse进行java项目开发的时候,每个project(工程)下面都会有一个.classpath文件,那么这个文件究竟有什么作用?

    2 作用

    .classpath文件用于记录项目编译环境的所有信息,包括:源文件路径、编译后class文件存放路径、依赖的jar包路径、运行的容器信息、依赖的外部project等信息。如果把该文件删除,则eclipse不能讲该工程识别为一个正常的java工程,仅仅当做普通的文件夹而导致不能正常运行。

    3 .classpath内容

    .classpath文件其实也是一个xml格式的内容文件,其具体内容大致如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <classpath>
        <classpathentry kind="src" path="src"/>
        <classpathentry kind="src" path="resource"/>
        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.7">
            <attributes>
                <attribute name="owner.project.facets" value="java"/>
            </attributes>
        </classpathentry>
        <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/学习 8080">
            <attributes>
                <attribute name="owner.project.facets" value="jst.web"/>
            </attributes>
        </classpathentry>
        <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
        <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
        <classpathentry kind="output" path="WebContent/WEB-INF/classes"/>
    </classpath>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    ①以”classpath”为根节点,每个“classpathentry”节点代表一个说明信息。 
    ②每个“classpathentry”以“kind”属性指明类型,“path”指明路径。 
    ③以上文件的所有内容,都是依赖项目中的“Java Build Path”内容改变而改变的,即对“Java Build Path”的所有操作都会反应到文件内容中。 
    这里写图片描述 
    现在来具体分析文件内容的每个节点含义

    3.1 kind="src"

    src:即source 源文件,代表的是一个源文件,path=”src”是一个相对路径,相对.classpath文件本身,即path=”src”表示文件夹src与.classpath在同一个目录,且代表源文件。

    <classpathentry kind="src" path="src"/>
    <classpathentry kind="src" path="resource"/>
    • 1
    • 2

    kind=”src”的操作对应于“Java Build Path”的“Source”tab页 
    这里写图片描述 
    如下图,增加一个文件夹bin作为源文件,则.classpath文件增加内容 
    这里写图片描述 
    内容增加如下:

    <classpathentry kind="src" path="src"/>
    <classpathentry kind="src" path="bin"/>
    <classpathentry kind="src" path="resource"/>
    • 1
    • 2
    • 3

    当然,做相应修改或删除,同样.classpath文件内容会相应改变。 
    另外,当指定属性combineaccessrules=”false”是则代表引入外部project,具体如下

    <classpathentry combineaccessrules="false" kind="src" path="/mybatis"/>
    • 1

    对应页面tab,其中path=”/mybatis”,是相对应workspace下的 
    绝对路径。 
    这里写图片描述

    3.2 kind="output"

    output用于指定java源文件编译后的class文件存放路径,格式如下

    <classpathentry kind="output" path="WebContent/WEB-INF/classes"/>
    • 1

    path:代表存放class文件路径,同样是相对.classpath文件的路径,找到“WebContent/WEB-INF/classes”,可以看到class文件的存放 
    这里写图片描述

    假设修改输出文件路径,则相应内容也会改变 
    改为:spring-mybatisWebContentWEB-INF ewclasses 
    这里写图片描述 
    则.classpath文件内容修改为:

    <classpathentry kind="output" path="WebContent/WEB-INF/newclasses"/>
    • 1

    实际存放class文件的路径也会改变 
    这里写图片描述

    3.3 kind="con"

    con即是container,就是程序运行的容器,或者就说是运行环境也OK,它实际上是在Myeclipse最初的时候要配置installed JREs中指定(一般情况下我们指定的是JDK),但是这里实际使用的是JDK下的JRE中的jar包,就是JDK_HOME/jre/lib就是对应的这条语句。具体内容如下

    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.7">
            <attributes>
                <attribute name="owner.project.facets" value="java"/>
            </attributes>
        </classpathentry>
        <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/学习 8080">
            <attributes>
                <attribute name="owner.project.facets" value="jst.web"/>
            </attributes>
        </classpathentry>
        <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
        <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    对应操作tab如下 
    这里写图片描述

    3.3.1 JRE配置

    path=”XXX”用于指定jre容器的使用情况,可选择jre的不同来源,不同来源path的实际值会有些变化 
    这里写图片描述 
    ①选择”Workspace default JRE(jdk1.7)”,则值为

    path="org.eclipse.jdt.launching.JRE_CONTAINER"
    • 1

    ②选择“Alternate JRE”,则值为

    path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.7"
    • 1

    其中最后么的jdk1.7是我自定义的JRE名称 
    ③选择”Execution environment”,即选择eclipse自带的内置jre,值为

    path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"
    • 1

    其中最后么的JavaSE-1.7是系统内置的JRE名称 
    另外属性值name=”owner.project.facets”

    <attribute name="owner.project.facets" value="java"/>
    • 1

    应该是指定JRE容器的具体使用的模板,默认使用”java”,具体的没有探究。

    3.3.2 Server Runtime配置

    同理,其他容器配置同上,如对Server Runtime 容器的配置,下面配置了tomcat容器运行环境

    <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/学习 8080"/>
    • 1

    3.3.3 Web App Libraries配置

    <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
    • 1

    3.3.4 User Library配置

    <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/tomcat7"/>
    • 1

    3.4 kind="lib"

    kind="lib"用于指定project依赖的Referenced Libraries,如图增加了一个jar包 
    这里写图片描述 
    则相应.classpath文件内容增加

    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/commons-dbcp-1.2.1.jar"/>
    • 1

    其中path指定了依赖的jar的相对路径。

    3.5 顺序

    .classpath文件中各节点的顺序是通过tab-Order and Export 来控制的,不同的顺序可能会引起加载class文件问题,一般是源码放在最前面。 
    这里写图片描述

    版权声明:本文为博主原创文章,水平有限,欢迎批评与指正。 http://blog.csdn.net/pengmm1990/article/details/68951389
     
     
     

    .project 文件

          <?xml version="1.0" encoding="UTF-8"?>
    <projectDescription>
        <name>CreateInterpret</name>
        <comment>JavaCC Nature@key 32303037303632392D3130303020437265617465496E746572707265742F777063 </comment>
        <projects>
        </projects>
        <buildSpec>
            <buildCommand>
                <name>sf.eclipse.javacc.javaccbuilder</name>
                <arguments>
                </arguments>
            </buildCommand>
            <buildCommand>
                <name>org.eclipse.jdt.core.javabuilder</name>
                <arguments>
                </arguments>
            </buildCommand>
        </buildSpec>
        <natures>
            <nature>org.eclipse.jdt.core.javanature</nature>
            <nature>sf.eclipse.javacc.javaccnature</nature>
        </natures>
    </projectDescription>

     从数据上看,我们可以了解到这些配置主要是描述工程的基本信息:

    1. 工程名<name></name>
    2. 工程注释描述<comment></comment>
    3. 运行时需要的额外Eclipse插件<natures></natures>,及其具体加载方式信息<buildSpec></buildSpec>

    如果你在开发过程中向工程里面加入了很多额外的插件,则必然会导致你的Eclipse启动速度变慢。在这种情况下,你可以到这个文件里面去掉一些插件,不过这样一来你在开启那些关联文件的时候会加载那些插件。

    JAVA中path和classpath具体是什么意思?

    path 路径,是java编译时需要调用的程序(如java,javac等)所在的地方
    classpath 类的路径,在编译运行java程序时,如果有调用到其他类的时候,在classpath中寻找需要的类。
  • 相关阅读:
    daper
    存储过程事务
    dengluzhucehaiyouxianshiMVC
    遍历加监听
    类的操作
    轮播图
    定时器的应用(三)
    定时器的应用(二)
    定时器的应用(一)
    延时调用
  • 原文地址:https://www.cnblogs.com/yaowen/p/8548899.html
Copyright © 2011-2022 走看看