eclipse java build path问题汇总

背景:在项目开发过程当中,不少应用都进行了模块划分,有的时候是jar包依赖,有的时候经过build path进行配置,搞清楚这部分有助于理解项目之间的关系。html

1 tms项目开发

1.1 问题描述

项目结构如图:java

这个项目是用dubbo方式进行通讯:web

tms_interface定义接口spring

tms_service是服务提供者eclipse

tms_web是服务消费者post

这里tms_service中没有对tms_interface的jar包引用,为了使得service中的类不报错,刚开始我采用以下方式进行关联ui

这个时候eclipse是不会报错的,可是在运行程序的时候就会出现以下错误:spa

Caused by: java.lang.NoClassDefFoundError: szfs/tms/interfaces/service/ITrade3d

Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [szfs.tms.service.framework.facade.TradeImpl] for bean with name 'trade' defined in class path resource [service.xml]: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: szfs/tms/interfaces/service/ITrade

1.2 发现问题

以SVN原有文件作说明code

检查tms_service的.project文件发现以下状况

而个人这些文件目录都是在G:\STSPro\partition-work\下面,因此确定是这里致使程序在运行时候找不到java文件的

再观察项目的.classpath 文件,发现以下状况

这些文件关联是什么?

1.3 解决问题

原来这是程序采用linked folder的方式进行关联,单纯的去修改配置文件治标不治本,这一切均可以在eclipse中配置完成。

解决思路:先创建关联文件夹,而后在eclipse中添加相关联的文件夹。

添加关联文件夹:

ps:我这里添加了tms_interface_src 和tms_public_lib_src两个关联文件夹。和SVN中tms_interface tms_public 命名不一样。

在父文件夹 右键——new folder ——Advance 关联须要关联的文件夹

 

效果如图:

 配置buil path:

工程 右键 Build Path ——Configure Build Path——Source

效果图和先后对比图:

       

此时程序运行前和运行后都没有问题。

 1.4 小结

eclipse中的配置改动 和.project .classpath文件的改动是一致的。

对于.project文件 当我在tms_service下面创建两个关联文件tms_interface_src 和tms_public_lib_src后,项目的目录结构就体如今.project文件上:

对于.project文件,当修改了build path的中的Source foleder配置,该配置就体如今.classpath文件上:

  

这里还发现:

 

总结就是:

工程目录的全部修改内容都和.project文件内容对应

build path 中内容的修改都和.classpath文件对应

能够参考eclipse项目中.classpath文件详解