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

devtools/2024/11/26 21:00:51/

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

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

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

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

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

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

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

java"><!-- 版本号统一管理 --><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。
(注意:父项目的版本号和子模块版本号是可以不一致的)

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

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

在这里插入图片描述


http://www.ppmy.cn/devtools/137217.html

相关文章

vue 预览pdf 【@sunsetglow/vue-pdf-viewer】开箱即用,无需开发

sunsetglow/vue-pdf-viewer 开箱即用的pdf插件sunsetglow/vue-pdf-viewer, vue3 版本 无需多余开发&#xff0c;操作简单&#xff0c;支持大文件 pdf 滚动加载&#xff0c;缩放&#xff0c;左侧导航&#xff0c;下载&#xff0c;页码&#xff0c;打印&#xff0c;文本复制&…

CodiMD导出pdf失败或无中文

CodiMD导出pdf失败&#xff0c;弹出文件保存窗口&#xff0c;有个pdf文件能下载&#xff0c;但是保存的时候提示“网站出问题了”&#xff0c;实际到服务器上看会发现docker崩溃了。 解决办法&#xff1a; 使用最新的CodiMD镜像&#xff0c;如nabo.codimd.dev/hackmdio/hackmd:…

计算机网络:应用层知识点概述及习题

网课资源&#xff1a; 湖科大教书匠 1、概述 习题1 1 在计算机网络体系结构中&#xff0c;应用层的主要功能是 A. 实现进程之间基于网络的通信 B. 通过进程之间的交互来实现特定网络应用 C. 实现分组在多个网络上传输 D. 透明传输比特流 2 以下不属于TCP/IP体系结构应用层范畴…

通过轻易云平台实现聚水潭数据高效集成到MySQL的技术方案

聚水潭数据集成到MySQL的技术案例分享 在本次技术案例中&#xff0c;我们将详细探讨如何通过轻易云数据集成平台&#xff0c;将聚水潭的数据高效、可靠地集成到MySQL数据库中。具体方案为“聚水谭-店铺查询单-->BI斯莱蒙-店铺表”。这一过程不仅需要处理大量数据的快速写入…

webrtc支持h265

Webrtc播放H265的技术探索(datachannelwasm) - 飞翔天空energy - 博客园 https://github.com/ZLMediaKit/ZLMediaKit/issues/3589 [技术咨询]addStreamProxy 添加拉流代理之后&#xff0c;webrtc协议无法播放&#xff0c;其它协议正常 Issue #1808 ZLMediaKit/ZLMediaKit G…

node.js路由

文章目录 1、node.js路由1. 什么是路由2. node.js路由的工作原理 2、在node.js中&#xff0c;内置模块实现路由1.案例2.createServer()3.end()4.listen()5.req 和 res 3、请求参数 1、node.js路由 1. 什么是路由 在Web开发中&#xff0c;路由是一个重要的概念。它用于将URL映…

路由器中继与桥接

一 . 背景 现在的路由器大多数已经开始支持多种网络连接模式&#xff0c;以下将以TP-Link迷你无线路由器为例进行展开介绍。在TP-Link迷你无线路由器上一般有AP&#xff08;接入点&#xff09;模式&#xff0c;Router&#xff08;无线路由&#xff09;模式&#xff0c;Repeate…

Leetcode 组合

使用回溯来解决此问题。 提供的代码使用了回溯法&#xff08;Backtracking&#xff09;&#xff0c;这是一种通过递归探索所有可能解的算法思想。以下是对算法思想的详细解释&#xff1a; 核心思想&#xff1a; 回溯法通过以下步骤解决问题&#xff1a; 路径选择&#xff1a…