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

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

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


    编译失败,找不到类文件,主要就是这个现象

二、问题点
    问题点很清晰了:编译失败,找不到类,找不到包

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

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

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

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

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

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

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



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

四、解决办法
   既然问题找到了,解决办法就很简单了,把文件都移到main包下面就好了,如下图:



   重新启动项目,解决问题

五、解决过程

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



六、问题总结
如果编译时候找不到类或者类路径,解决办法通过有已下几种

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


七、为什么会发生?

对maven构建工具编译原理了解的不深刻,所以学东西一定要了解其本质,也就是心法。哈哈哈

猜你喜欢

转载自825635381.iteye.com/blog/2374699