eclipse工程中的.classpath文件

本文详细解释了Eclipse或MyEclipse中的.classpath文件的作用及内容。.classpath文件记录了项目编译环境的所有信息,包括源文件路径、class文件存放路径、依赖的jar包路径等。文章还介绍了如何通过修改这些配置来调整项目的编译环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java 编译文件

<?xml version="1.0" encoding="UTF-8"?>

<classpath>
<classpathentry kind="src" path="src/java"/> --指代源码所在的路径
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>--指代项目的运行环境(jar) <!-- JDK编译时容器,建立好java项目后自动产生的 -->
<classpathentry combineaccessrules="false" kind="src" path="/jade-component"/> --关联项目
<classpathentry combineaccessrules="false" kind="src" path="/jade-core"/>
<classpathentry combineaccessrules="false" kind="src" path="/jade-hr-component"/>
<classpathentry combineaccessrules="false" kind="src" path="/jade-hr-res"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/jade-libs"/>--指代建立的user-library运行环境(jar)
<classpathentry combineaccessrules="false" kind="src" path="/jade-hr-orghc"/>
<classpathentry combineaccessrules="false" kind="src" path="/jade-hr-worktop"/>
<classpathentry kind="src" path="/wage-business"/>
<classpathentry kind="src" path="/wage-cal-engine"/>
<classpathentry kind="src" path="/gpos-wagebusiness"/>
<classpathentry kind="output" path="bin"/>--指代java的编译成class文件存放位置(输出位置)

</classpath>


从数据上我们容易看出,上面描述了工程的依赖文件:

  1. 源文件的具体位置(kind="src")--指带源文件所在的路径,如本项目src/java下或其它关联项目
  2. 运行的系统环境(kind="con")--项目运行的底层支持(运行环境),如,关联jar包,编译环境
  3. 工程的library的具体位置信息(kind="lib")
  4. 在每个lib的xml子节点中,有关于它的其它配置信息(例如我配置的那个"javadoc_location")
  5. 项目的输出目录(kind="output")

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页 

创建源代码存放文件(并不是简简单单的新建个文件夹,这个会写入classpath文件中)

这里写图片描述 
如下图,增加一个文件夹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-mybatis\WebContent\WEB-INF\newclasses 
这里写图片描述 
则.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"/>一般大项目不会这样做,而是将一些jar包单独放置在一个项目中,又其它项目来引用此项目即可,如下配置<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/jade-libs"/>--指代建立的user-library运行环境(jar)
  • 1

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

3.5 顺序

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


### Eclipse 中 `org.springframework` 使用问题及解决方案 #### Bean 创建失败 (`BeansException`) 当在 Spring 容器中遇到 `org.springframework.beans.BeansException` 时,这表明容器在处理 bean 的生命周期管理方面遇到了障碍。此类异常可能源于多种因素,包括但不限于 XML 配置文件中的拼写错误、缺少必要的属性设置或是循环依赖等问题[^1]。 对于这类问题的一个有效排查手段是从检查配置文件着手,确认所有的 bean 是否都按照预期进行了声明,并且其所需的参数均已正确定义。此外,利用日志输出可以更深入地理解具体是在哪个阶段发生了错误以及涉及哪些组件。 #### JAR 文件版本不匹配 (MethodClassKey) 如果应用程序抛出了有关 `org.springframework.core.MethodClassKey` 的警告或错误,则可能是由于不同模块间所引用的 Spring 库存在版本差异所致。尤其是在多模块项目里修改了 Maven 或 Gradle 构建脚本之后更容易发生这种情况。建议统一各个子项目的依赖项至相同的大版本号下,从而减少潜在冲突的可能性[^2]。 针对 MyEclipse 用户来说,在调整 pom.xml 后应重新构建整个工程来确保所有更改生效;也可以尝试清理本地仓库缓存后再试一次更新操作。 #### 缺失 Bean 定义 (`NoSuchBeanDefinitionException`) 面对 `org.springframework.beans.factory.NoSuchBeanDefinitionException` 这样的提示信息,意味着程序试图访问一个尚未被注册到上下文环境里的对象实例。此时应当仔细核对 @ComponentScan 注解的应用范围是否涵盖了目标类所在的包路径,同时也要留意扫描机制是否会因为某些条件而跳过了特定区域内的候选者们[^3]。 另外值得注意的是,有时候即使表面上看起来已经正确设置了自动装配规则但仍会碰到此情况——这时不妨考虑显式指定要注入的对象名称或者通过其他方式增强识别度。 #### 类未找到 (`ClassNotFoundException`) 关于启动 Tomcat 时报出 `java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener` 错误的情形,通常是由于 Web 应用部署描述符(web.xml)内指定了不存在于运行时刻classpath上的监听器类型引起的结果之一。为了修复它,除了保证相应的 spring-web*.jar 已经放置到了 WEB-INF/lib 下之外,还应该验证 web.xml 文档结构及其内部元素书写无误[^4]。 ```xml <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值