当前位置: 首页 > article >正文

本地可运行,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包

在这里插入图片描述


http://www.kler.cn/a/406121.html

相关文章:

  • 智能工厂的设计软件 为了监管控一体化的全能Supervisor 的监督学习 之 序7 进化论及科学的信息技术创新:分布式账本/区块链/智能合约
  • 微知-ib_write_bw的各种参数汇总(-d -q -s -R --run_infinitely)
  • IDEA算法的详细介绍及Python实现
  • 【题解】—— LeetCode一周小结46
  • 五天SpringCloud计划——DAY1之mybatis-plus的使用
  • cocos creator 3.8 一些简单的操作技巧,材质的创建 1
  • java基础---反射
  • 综合练习--轮播图
  • ubuntu20.04中编译安装gcc 9.2.0
  • .net将List<实体1>的数据转到List<实体2>
  • Linux 常用命令大汇总
  • 【数论】莫比乌斯函数及其反演
  • 探索免费的Figma中文版:开启高效设计之旅
  • tcp::acceptor acceptor(io_service, tcp::endpoint(tcp::v4(), PORT)); 解析
  • (超级详细!!!)解决“com.mysql.jdbc.Driver is deprecated”警告:详解与优化
  • xxl-job入门
  • 支持多种快充协议和支持多种功能的诱骗取电协议芯片
  • 解决——CPN IDE卡在启动画面中 initializing状态
  • 二、CSS
  • tcp/ip异常断开调试笔记——lwip
  • Android音频采集
  • C# NetworkStream用法
  • 我对软考“背背背”的看法
  • [已解决]Tomcat 9.0.97控制台乱码
  • Pytorch 遇到 NNPACK 初始化问题unsupported hardware
  • CSS给元素的四个角添加边框