项目打包,报软件包、类不存在问题排查过程

[size=medium][color=brown][b]项目打包报,软件包、类不存在问题排查过程[/b][/color][/size]

[size=medium][color=indigo][b]一、背景[/b][/color][/size]
吃完午饭回来,看见佐哥和琳妹妹在那里处理问题,好信的我,就在旁边瞄着,看出来,大致的问题现象是项目无法编译,报找不到类文件和包的错误,我心里想这个一般就是确实没有这个类,或者就是这个类和其他类重复了路径和名称,才报这个错误,就这样瞄了一会,看他们试了好多办法都么有解决,我说那我来看看。具体问题报错如下图:

[img]http://dl2.iteye.com/upload/attachment/0124/8962/d3eba4c0-1353-31bd-83aa-8f821072154c.jpg[/img]
编译失败,找不到类文件,主要就是这个现象

[size=medium][color=indigo][b]二、问题点[/b][/color][/size]
问题点很清晰了:编译失败,找不到类,找不到包

[size=medium][color=indigo][b]三、排查过程[/b][/color][/size]
1. 根据我的经验,这类问题出现可能的原因,一种是不存在这个路径和文件,第二种是在其他地方有个路径和文件名一样的重复,导致编译器无法判断,报错找不到。那么接下来沿着这两个方向查找

2. 查询项目文件,确实都是存在的,路径和文件名都对应的上

3. 查找项目中其他的包里面是否存在这个命名路径和类名,看了下也不存在

4. 这样基本的两个判断都排除了,那么基本确定是其他原因导致的,根据以往经验,有没有可能是所依赖的这个文件所在的jar是之前打包的,没有包含进这个文件,清掉maven仓库,重新打包是不是就会好

5. 基于第4点猜测,这边把maven仓库清空,重新打包,发布,发现还是有这个错误。那又排除了一个打包依赖错误导致的原因

6. 那么编译时还找不到类文件,这个文件就有点怪了,我想还是去看看打包的代码和编译后的代码,看看有没有奇怪的地方,看了下打包代码的jar包,发现里面确实没有编译进去报错的类,又看了下src,确实有这个文件,这就奇怪了。继续寻找,

[color=red][b]就在我切换代码路径的过程中,突然发现在src源文件路径下,有一个main文件夹,还有一个inner文件夹,而那个找不到的文件夹就在这个inner文件夹下,豁然开朗,原因找到了,就是这原因,maven编译的原理,是找main路径下的java和resources目录来编译的,文件不在main目录下,当然报找不到文件了[/b][/color],我再去项目路径查看下是不是这个原因,如下图:

[img]http://dl2.iteye.com/upload/attachment/0124/8968/34fdf0e6-0e52-39c7-8357-e0ba13b85141.png[/img]

确实就是这个问题。OK,这下,问题找到了就好解决了

[size=medium][color=indigo][b]四、解决办法[/b][/color][/size]
既然问题找到了,解决办法就很简单了,把文件都移到main包下面就好了,如下图:

[img]http://dl2.iteye.com/upload/attachment/0124/8970/f2b2d0fc-5bff-3aae-be52-8ad741467287.png[/img]

重新启动项目,解决问题

[size=medium][color=indigo][b]五、解决过程[/b][/color][/size]

1. 把java文件都移动到main路径下,这样maven才能编译
2. 重新maven编译,重启项目,解决问题:

[img]http://dl2.iteye.com/upload/attachment/0124/8972/2dfafa97-91e3-3fac-99d9-d946be4a3780.png[/img]

[size=medium][color=indigo][b]六、问题总结[/b][/color][/size]
[color=indigo][b]如果编译时候找不到类或者类路径,解决办法通过有已下几种[/b][/color]

[color=red][b]1. 是不是文件和路径不存在
2. 是不是文件和路径存在重复
3. 是不是打包依赖的里面不存在或者重复,重新打最新的包,试试
4. 是不是项目路径不符合构建工具路径要求,不是在构建工具指定的目录下,这样构建工具找不到文件。如这次的maven,文件一定要在src/main/java和src/main/resources目录下[/b][/color]

[size=medium][color=indigo][b]七、为什么会发生?[/b][/color][/size]

[color=indigo][b]对maven构建工具编译原理了解的不深刻,所以学东西一定要了解其本质,也就是心法。哈哈哈[/b][/color]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值