由于现在springboot的主流版本都已经是2.x的了,因此自己也打算将项目中使用的springboot1.5.10升级到2.2.4这个版本。

自己也能够预料得到,在升级过程中肯定会遇到各种各样的问题,自己也做好了准备去面对这些问题。

问题一:JedisPoolConfig这个类找不到

这个类所在的包为 redis.clients.jedis.JedisPoolConfig;由于springboot版本的切换,redis的版本也跟着进行了切换,本人使用的这个版本中不包含这个类,

因此报错。

解决办法:使用搜索引擎查找问题的原因,在下面这两篇博文中找到了解决办法。

按照这篇博文找到一个解决方案

https://blog.csdn.net/wangxinyao1997/article/details/88956674

https://stackoverflow.com/questions/22704518/jedispoolconfig-is-not-assignable-to-genericobjectpoolconfig

解决方式为添加一个redis.clients

的依赖,

<dependency>

<groupId>redis.clients</groupId>

<artifactId>jedis</artifactId>

<version>2.4.2</version>

</dependency>

重新启动,项目报错,错误信息为:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'JedisConnectionFactory' defined in class path resource [applets/common/config/RedisConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.redis.connection.jedis.JedisConnectionFactory]: Factory method 'JedisConnectionFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: redis/clients/jedis/util/SafeEncoder

at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:656)

at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:636)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)

at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)

at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)

at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)

at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1287)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1207)

at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:885)

at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789)

... 32 common frames omitted

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.redis.connection.jedis.JedisConnectionFactory]: Factory method 'JedisConnectionFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: redis/clients/jedis/util/SafeEncoder

at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)

at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:651)

... 46 common frames omitted

Caused by: java.lang.NoClassDefFoundError: redis/clients/jedis/util/SafeEncoder

at org.springframework.data.redis.connection.jedis.JedisConverters.lambda$static$1(JedisConverters.java:129)

at org.springframework.data.redis.connection.jedis.JedisConverters.toBytes(JedisConverters.java:344)

at org.springframework.data.redis.connection.jedis.JedisConverters.<clinit>(JedisConverters.java:136)

at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.<clinit>(JedisConnectionFactory.java:85)

at applets.common.config.RedisConfig.JedisConnectionFactory(RedisConfig.java:117)

at applets.common.config.RedisConfig$$EnhancerBySpringCGLIB$$7312b2a1.CGLIB$JedisConnectionFactory$1(<generated>)

at applets.common.config.RedisConfig$$EnhancerBySpringCGLIB$$7312b2a1$$FastClassBySpringCGLIB$$99f19937.invoke(<generated>)

at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)

at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363)

at applets.common.config.RedisConfig$$EnhancerBySpringCGLIB$$7312b2a1.JedisConnectionFactory(<generated>)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)

... 47 common frames omitted

Caused by: java.lang.ClassNotFoundException: redis.clients.jedis.util.SafeEncoder

at java.net.URLClassLoader.findClass(URLClassLoader.java:381)

at java.lang.ClassLoader.loadClass(ClassLoader.java:424)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)

at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

... 62 common frames omitted

继续查找问题的解决办法,参考博文为  https://www.cnblogs.com/renjianjun/p/13611140.html

修改方式为将redis.clients的版本切换为3.3.0即可,重新启动,报了一个警告信息如下:

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

大致意思就是com.mysql.jdbc.Driver这个驱动类已经弃用了,需要使用新的驱动类com.mysql.cj.jdbc.Driver。

修改配置,将com.mysql.jdbc.Driver 修改为 com.mysql.cj.jdbc.Driver,从新启动还是有问题。

问题二:配置的改动,有好几个地方的配置都有改动,例举如下:

server.context-path=/applets 修改为server.servlet.context-path=/applets

spring文件上传大小配置和http请求大小配置

spring.http.multipart.maxFileSize=100Mb

spring.http.multipart.maxRequestSize=1000Mb

修改为

spring.servlet.multipart.max-file-size=100Mb

spring.servlet.multipart.max-request-size=100Mb

参考文章 https://blog.csdn.net/weixin_40816738/article/details/119878720

问题三:单位换算问题

启动继续报错,报错信息为

Failed to bind properties under 'spring.servlet.multipart.max-request-size' to org.springframework.util.unit.DataSize:

Property: spring.servlet.multipart.max-request-size

Value: 100Mb

Origin: "spring.servlet.multipart.max-request-size" from property source "applicationConfig: [classpath:/application-dev.properties]"

Reason: failed to convert java.lang.String to org.springframework.util.unit.DataSize

大致意思就是底层读取配置文件中最大文件上传大小和请求大小信息时,使用的是字节来读取,不能添加单位Mb

参考文章https://blog.csdn.net/guocunlei25/article/details/90232243

将100Mb修改为对应的字节单位,并且不添加单位即可。

spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=104857600
spring.servlet.multipart.max-request-size=104857600

单位在线换算的网址为http://www.bejson.com/convert/filesize/

配置全部修改好后,重新启动项目,正常运行。至此项目升级改造完毕,从此开启springboot2.x时代。

Springboot-1.5.10.RELEASE 升级到 2.2.4.RELEASE版本遇到的一些问题总结的更多相关文章

  1. 001-Spring Cloud Edgware.SR3 升级最新 Finchley.SR1,spring boot 1.5.9.RELEASE 升级2.0.4.RELEASE注意问题点

    一.前提 升级前 => 升级后 Spring Boot 1.5.x => Spring Boot 2.0.4.RELEASE Spring Cloud Edgware SR3 => ...

  2. 易升地址,windows 10, 1511 升级 1607 仍然有效

    https://www.microsoft.com/zh-cn/software-download/windows10 易升地址, windows 10 ,1511 升级 1607 仍然有效

  3. 【转】python 2.6.6升级到python 2.7.x版本的方法

    1.下载python2.7.x wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz 2.解压并编译安装 tar -zxvf Py ...

  4. 12 Release History for go go语言的版本历史

    Release History Release Policy go1.11 (released 2018/08/24) go1.10 (released 2018/02/16) Minor revis ...

  5. 各个版本 Windows 10 系统中自带的 .NET Framework 版本

    原文各个版本 Windows 10 系统中自带的 .NET Framework 版本 Windows 名称 Windows 版本 自带的 .NET Framework 版本 Windows 10 Oc ...

  6. 升级PHPstudy自带的mysql版本 从5.5升级到5.7.22

    原文:升级PHPstudy自带的mysql版本 从5.5升级到5.7.22 版权声明:请注意:如需转载请注明出处. https://blog.csdn.net/qq_32534555/article/ ...

  7. xcode7.3 升级 xcode8.0 后权限设置问题(升级xcode 8.0 后构建版本不显示问题)

    xcode7.3 升级 xcode8.0 后权限设置问题(升级xcode 8.0 后构建版本不显示问题) 前两天为了适配 iOS10 的系统 我将xcode 7.3 升级到了 xcode 8.0 但是 ...

  8. 升级cocoapods到1.2 beta版本的方法

    最近写Swfit3.0, 要用到一些框架, 然后就用cocoapods嘛, 结果说要cocoapods1.1.0版本才行, 而自己的是cocoapods1.0.1版本的, 所以就想着升级嘛, 结果就遇 ...

  9. 【集美大学1411_助教博客】团队作业10——项目复审与事后分析(Beta版本)

    写在前面的话 软件工程课结束了,大家开心吗?是不是再也不用熬夜写代码了?如果这门课你真的熬夜写代码了,相信你一定有收获,如果这门课结束了你觉得是自己一个全新的开始,那么这门课的意义就实现了.团队作业全 ...

  10. 【2017集美大学1412软工实践_助教博客】团队作业10——项目复审与事后分析(Beta版本)

    写在前面的话 转眼轰轰烈烈本学期的软工实践就结束了,这个过程中想必在熬夜敲代码,激烈讨论中留下诸多回忆的同时,也收获了不少.恭喜所有团队完成了本阶段冲刺,此外,由于大家的贡献分给的都很平均,将个人贡献 ...

随机推荐

  1. 3.2 IDAPro脚本IDC常用函数

    IDA Pro内置的IDC脚本语言是一种灵活的.C语言风格的脚本语言,旨在帮助逆向工程师更轻松地进行反汇编和静态分析.IDC脚本语言支持变量.表达式.循环.分支.函数等C语言中的常见语法结构,并且还提 ...

  2. 8.2 C++ 引用与取别名

    C/C++语言是一种通用的编程语言,具有高效.灵活和可移植等特点.C语言主要用于系统编程,如操作系统.编译器.数据库等:C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统.图形用户界面 ...

  3. 遥感图像处理笔记之【Deep learning for Geospatial data applications — Multi-label Classification】

    遥感图像处理学习(2) 前言 遥感图像处理方向的学习者可以参考或者复刻 本文初编辑于2023年12月14日 2024年1月24日搬运至本人博客园平台 文章标题:Deep learning for Ge ...

  4. 【C++深度剖析】为什么C++支持函数重载而C不支持--C++程序编译链接过程--符号表生成规则【Linux环境超详细解释C++函数重载底层原理】

    文章目录 前言 Linux环境g++编译器的配置以及一些准备工作 源文件的符号表生成以及分析 尾声 前言 先赞后看好习惯 打字不容易,这都是很用心做的,希望得到支持你 大家的点赞和支持对于我来说是一种 ...

  5. spring声明式事务(@Transactional)开发常犯的几个错误及解决办法

    spring声明式事务(@Transactional)开发常犯的几个错误及解决办法 目前JAVA的微服务项目基本都是SSM结构(即:springCloud +springMVC+Mybatis),而其 ...

  6. 2.3 实验:用linxerUnpack进行通用脱壳--《恶意代码分析实战》

    Lab01-03.exe     实验内容:   1.将文件上传到http://www.VirusTotal.com 进行分析并查看报告.文件匹配到了已有的反病毒软件特征吗?   2.是否有这个文件被 ...

  7. linux-Shell将命令行终端输出结果写入保存到文件中

    (一)将输出与错误写到同一个文件(1)方法1 #!bin/bashjava -jar hbase-example.jar 2>&1 | tee hbase_log.txt 说明:0,1, ...

  8. Java-生成字符串的MD5值

    方法一:public static String getMd5(String str) { MessageDigest md5 = null; try { md5 = MessageDigest.ge ...

  9. Linux-RAID类型介绍、创建、彻底删除

    一.RAID(磁盘阵列) 1.1.RAID概念 RAID简称为独立冗余磁盘阵列,把多块独立的物理硬盘按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术, ...

  10. 写好C#代码的技巧

    写好C#代码的技巧 编者导语 本文来自https://www.pluralsight.com,作者Afzaal Ahmad Zeeshan. 原文包含以下三篇文章: <编写更好的C#代码简介&g ...