SpringBoot项目通过Maven打包后运行报错

先看报错:

SpringBoot项目通过Maven打包后运行报错

重点: Exception in thread "main" java.lang.NoClassDefFoundError: 说明运行Jar包的过程中某依赖项找不到!!!!

初始认为环境变量配置引起找不多对应的类,然后了无数次的尝试,未果........

换了个项目打包,结果运行起来正常了,目光转移到项目本身.

分析: 项目是Idea开发的SpringBoot项目,在Idea上运行一切正常,说明程序可以运行,问题出在了打包过程中.

打包我使用的SpringBoot项目POM文件中的Maven插件执行的,如下:

SpringBoot项目通过Maven打包后运行报错

然后开始核对问题项目和正常项目在POM文件中的build标签有什么不同.

正常项目:

SpringBoot项目通过Maven打包后运行报错

异常项目:

SpringBoot项目通过Maven打包后运行报错

可以看到两个项目中的配置差异还是很明显的,然后问题项目中我开始尝试注释掉正常项目中没有的标签.........

然后就找到了它:

SpringBoot项目通过Maven打包后运行报错

将红框中的内容注释掉后,重新打包项目,运行jar包正常.

然后各种查这个include标签到底是何方神圣,未果,还希望大神指点迷津.

对比了注释include标签前后的jar包,发现当include生效时jar包不到2M,注释掉后80M, 虽然不知道include是个什么鬼,这里也猜出一二, 他会控制依赖不被打入到jar包中. 这就是为什么最初的运行找不到依赖中的类!!!!!!!!!!!

吐槽一下:问题jar包之前有人在Linux上运行成功了,导致我一直认为我本地的JDK环境存在问题.真是巨坑!!!!!!!!!!!!