java build path 空白_eclipse java build path问题汇总

  • Post author:
  • Post category:java


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

1 tms项目开发

1.1 问题描述

项目结构如图:

33036a9770cdeb0a90fad6eb54e688e5.png

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

tms_interface定义接口

tms_service是服务提供者

tms_web是服务消费者

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

0d6faed18576e83bf5eebd0526ff9de7.png

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

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

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原有文件做说明

检查tms_service的.project文件发现如下情况

253b147b468602ccc8c8746566f02f92.png

而我的这些文件目录都是在G:\STSPro\partition-work\下面,所以肯定是这里导致程序在运行时候找不到java文件的

再观察项目的.classpath 文件,发现如下情况

0ea4f5adc9597eb4df3e23c34711762d.png

这些文件关联是什么?

1.3 解决问题

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

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

添加关联文件夹:

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

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

14d90a30b2699d82c2383fdd6339400e.png

效果如图:

86fa5e3730deafe22477e6c4e740e970.png

配置buil path:

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

9d88cac790480b78749d87c11b1606ad.png

效果图和前后对比图:

47648f989b3519e6a8d1b1fd39e2f8af.png

a6636c8b0382b692f6f4e76aca42580f.png

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

1.4 小结

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

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

cf85f6497f74ececc88a45ed0b35e9e5.png

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

df18ecfbab39412eb7a12ea9197ae360.png

0518fe5cf1e43616133f82f3570e87d5.png

这里还发现:

56249f46fd14746f9223327c2a2f64e8.png

总结就是:

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

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



版权声明:本文为weixin_39767645原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。