详解eclipse项目中的.classpath文件原理

 更新时间:2021年12月31日 14:44  点击:266 作者:pengmm1990

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>

  • ①以”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"/>

kind=”src”的操作对应于“Java Build Path”的“Source”tab页

如下图,增加一个文件夹bin作为源文件,则.classpath文件增加内容

内容增加如下:

<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="bin"/>
<classpathentry kind="src" path="resource"/>

当然,做相应修改或删除,同样.classpath文件内容会相应改变。

另外,当指定属性combineaccessrules=”false”是则代表引入外部project,具体如下

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

对应页面tab,其中path=”/mybatis”,是相对应workspace下的

绝对路径。

3.2 kind="output"

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

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

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

假设修改输出文件路径,则相应内容也会改变

改为:spring-mybatis\WebContent\WEB-INF\newclasses

则.classpath文件内容修改为:

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

实际存放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"/>

对应操作tab如下

3.3.1 JRE配置

path=”XXX”用于指定jre容器的使用情况,可选择jre的不同来源,不同来源path的实际值会有些变化

①选择”Workspace default JRE(jdk1.7)”,则值为

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

②选择“Alternate JRE”,则值为

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

其中最后么的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"

其中最后么的JavaSE-1.7是系统内置的JRE名称

另外属性值name=”owner.project.facets”

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

应该是指定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"/>

3.3.3 Web App Libraries配置

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

3.3.4 User Library配置

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

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"/>

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

3.5 顺序

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

到此这篇关于详解eclipse项目中的.classpath文件原理的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持猪先飞。

原文出处:https://blog.csdn.net/pengmm1990/article/details/68951389

[!--infotagslink--]

相关文章

  • Tomcat配置及如何在Eclipse中启动

    这篇文章主要介绍了Tomcat配置及如何在Eclipse中启动,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-04
  • 标准版Eclipse搭建PHP环境的详细步骤

    一、下载Eclipse的PHP插件  百度搜索phpeclipse,看到某条结果是带有SourceForge.net字样的,点进去,找到Download按钮,点击之后,等待5秒就会开始下载了。二、安装Eclipse的PHP插件  插件下载完成之后,解压,然后把site.xml...2015-11-24
  • tomcat9 下载安装和配置+整合到eclipse的教程详解

    这篇文章主要介绍了tomcat9 下载安装和配置+整合到eclipse,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-28
  • Eclipse中安装反编译工具Fernflower的方法(Enhanced Class Decompiler)

    这篇文章主要介绍了Eclipse中安装反编译工具Fernflower的方法(Enhanced Class Decompiler),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-20
  • Eclipse编辑jsp、js文件时卡死现象的解决办法汇总

    使用Eclipse编辑jsp、js文件时,经常出现卡死现象,在网上百度了N次,经过N次优化调整后,卡死现象逐步好转,下面通过脚本之家平台给大家分享几种解决办法,需要的朋友参考下...2016-02-05
  • Spring JPA配置文件Eclipse报错如何解决

    这篇文章主要介绍了Spring JPA配置文件Eclipse报错如何解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-10-21
  • Windows系统下Eclipse搭建ESP32编译环境及安装过程

    Ecppse 使用了 ESP-IDF 中的 Makefile 支持。这意味着您需要从创建 ESP-IDF 项目开始。您可以使用 github 中的 idf-template 项目,接下来通过本文给大家介绍Windows系统下Eclipse搭建ESP32编译环境及安装过程,感兴趣的朋友一起看看吧...2021-10-18
  • eclipse汉化及jdk安装环境配置超详细教程(Java安装教程)

    这篇文章主要介绍了eclipse汉化及jdk安装环境配置超详细教程(Java安装教程),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-11
  • Eclipse 和 IDEA 导入library库文件【图文步骤】

    关于关于Eclipse 和 IDEA 导入library库文件,本教程使用图文并茂来详情讲解,非常实用,做Android开发的同学可以参考一下。 关于Eclipse 和 IDEA 导入library库文件,...2016-09-20
  • node.js插件nodeclipse安装图文教程

    这篇文章主要为大家分享了node.js插件nodeclipse安装图文教程,如何安装node.js支持插件,下面小编为大家分享具体步骤...2016-05-09
  • eclipse实现ECDSA数字签名

    这篇文章主要为大家详细介绍了eclipse实现ECDSA数字签名,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-24
  • Eclipse对printf()不能输出到控制台的快速解决方法

    Eclipse对printf()不能输出到控制台的快速解决方法。需要的朋友可以过来参考下,希望对大家有所帮助...2020-04-25
  • Eclipse JBoss MySQL开发环境设置全攻略

    J2EE是很好的。作为开发环境,如果采用经典配置:JBuilder Weblogic Oracle,自是得心应手,但价格是惊人的。此配置主要是针对大型或超大型应用,硬件要求也很高,针对国内以中小...2016-11-25
  • Eclipse 中使用ADT 时出现“R cannot be resolved to a variable”的错误简单解决

    在eclipse中并不能直接开发android程序,需要一个ADT插件,但在64位Ubuntu上,Eclipse中使用ADT时,提示R找不到“R cannot be resolved to a variable”错误,如何解决呢?...2016-09-20
  • eclipse将android工程生成apk安装文件图文教程

    本文我们来讲讲在eclipse开发工具中将android工程生成可安装的apk文件的图文步骤教程,学习android开发的朋友可以参考一下。 eclipse生成andoid安装文件apk的图文...2016-09-20
  • eclipse实现可认证的DH密钥交换协议

    这篇文章主要介绍了eclipse实现可认证的DH密钥交换协议,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-24
  • [最新图文版]如何将项目从eclipse迁移到android studio?

    Android Studio是一个Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试。 前言 最近Android s...2016-09-20
  • 关于JDK+Tomcat+eclipse+MyEclipse的配置方法,看这篇够了

    关于JDK+Tomcat+eclipse+MyEclipse的配置问题,很多朋友都搞不太明白,网上一搜配置方法多种哪种最精简呢,今天小编给大家分享一篇文章帮助大家快速掌握JDK Tomcat eclipse MyEclipse配置技巧,需要的朋友参考下吧...2021-06-19
  • eclipse实现DSA数字签名

    这篇文章主要为大家详细介绍了eclipse实现DSA数字签名算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-24
  • Eclipse创建tomcat实现过程原理详解

    这篇文章主要介绍了Eclipse创建tomcat实现过程原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-09-28