欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 本地可运行,jar包运行错误【解决实例】:通过IDEA的maven package打包多模块项目

本地可运行,jar包运行错误【解决实例】:通过IDEA的maven package打包多模块项目

2024/11/30 20:39:43 来源:https://blog.csdn.net/weixin_47510148/article/details/143963803  浏览:    关键词:本地可运行,jar包运行错误【解决实例】:通过IDEA的maven package打包多模块项目

这是一个排错的经验分享贴子

最近在跟着知识星球做项目,到最后是部署到服务器,使用的方式是打包jar包上传到服务器运行。

但在实际打包的过程中,出现了本地IDEA可运行,jar包不可运行的错误。

具体错误截图如下:
在这里插入图片描述
可以发现,错误是ClassNotFoundException

于是我顺藤摸瓜找到了打包后的对应Jar包,找到我出错误的相关jar包,jackson相关的依赖,发现确实没有这个jar包。

很奇怪,于是我找到本地的IDEA,发现依旧没有这个类
(IDEA运行时候的容错率比较高,有时候可以正常运行,但打包要绝对严谨,缺少类或者版本不一致绝对会报错的)

可是我的项目(父项目)设定了版本号2.15.2,按理来说这个版本是会有这个类的。

<!-- 版本号统一管理 --><properties>... ...<!--jackson工具,用于将出入参转化为json字符串--><jackson.version>2.15.2</jackson.version>... ...</properties><!-- 统一依赖管理 --><dependencyManagement><dependencies>... ...<!-- jackson工具,用于将出入参转化为json字符串 --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>${jackson.version}</version></dependency>... ...</dependencies></dependencyManagement>

子模块之间的依赖也没有出问题,为何没有导入Jar包呢?

搜索了很多资料后,我怀疑是:版本冲突

在控制台执行代码如下:

mvn dependency:tree | Select-String -Pattern "jackson"

这句话的意思是找到所有jackson的jar包,通过这个命令,可以找到它的版本号,查看是否存在版本号不一致的问题。

控制台输出以下内容:
在这里插入图片描述
在这里插入图片描述
以上是部分内容截图,可以看到,jackson有的相关jar包版本号为2.15.2,有的则为2.13.1,出现了版本号冲突,并且低版本的2.13.1确实会相比于2.15.2版本缺少一些类。

那么为什么会出现这种情况,我已经定义了版本号,为何没有按照这个来呢?

排查了很久,我发现是springboot版本的问题。

父pom文件里,我将版本号设置为2.6.3

在导入Jar包的时候,会按照对应的版本导入,由于版本号太低,无法导入2.15.2版本的Jackson,而是按照对应版本导入了2.13.1版本

解决办法

在启动类里,将版本号更改为更高的2.6.6。
(注意:父项目的版本号和子模块版本号是可以不一致的)

      <!-- Web 依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.6.6</version></dependency>

这次我终于成功导入了Jar包

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com