人生无常,大肠包小肠;代码无常,一坑接一坑,坑坑不一样!
问题排查
根据工作需要,最近有个需求,在使用的Springboot框架中导入第三方jar包,一直使用Maven私服,所以第一次遇到这种问题,还是按照之前的思维方式去处理,上来就直接导入,如图:
${project.basedir}
为Maven项目结构中的根目录, 在根目录中创建一个lib
包转发专门放置第三方jar!
在本地启动没问题,顺利启动!但上服务器后报错了!!!错误如下:
很明显,代码在启动中没有找到导入的第三方jar,说明导入失败了!!!
问题处理
问题排查
既然没有找到相应jar包中的类,那就首先查看jar是否被打入到包中:
果然未找到相应的jar,那就说明确实导入jar包失败了!
后面经排查发现,我们在用springboot项目时,一般都是使用spring-boot-maven-plugin
插件进行打包的,会将依赖的jar包全部打包进去。该文件包含了所有的依赖和资源文件,可以直接在命令行或者传统的 Java Web 服务器上启动运行。但scope为system
的maven默认是不打包进去的,所以在插件中配置includeSystemScope
,可以是scope为system
的jar打包到jar中, 代码如下
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
添加之后再次打包查看,已经存在:
搞定收工!!!