记升级springboot1.X 到springboot2.3.5踩的坑

问题1:Spring Boot整合Nacos时遇到 java.lang.IllegalStateException: Context has been already given a name

解决办法参考此链接

详细报错信息:

解决办法:
在基于Spring Boot框架项目开发过程中,集成了Alibaba Nacos的服务注册与发现和配置中心,因为Spring Boot本身已经集成了日志框架Logback,而在Alibaba Nacos中又集成了一套Logback框架。而Alibaba Nacos中的Logback加载要优先于项目自身的Logback框架,在一个项目中其context_name只能定义一次,

所以,在项目启动时,Alibaba Nacos的Logback先加载完成后,再加载项目本身的Logback时就出现了冲突,报错误日志 “ Failed to rename context [logback] as [nacos] java.lang.IllegalStateException: Context has been already given a name ” ,但是不影响使用,

解决这个,只要禁用掉其中一个Logback就可以了,一般禁用外部框架夹带的Logback即可 ,在启动类中加入如下段代码即可:
System.setProperty(“nacos.logging.default.config.enabled”,“false”);

问题2:Springboot 启动命令中添加 –spring.config.location不生效

解决办法参考此链接

原因:
springboot 2.x版本中,对 –spring.config.location 的语义做了改变,如果启动命令中添加了该配置,则不再读取 classpath 中的配置文件。
spring.config.location 设置 在 classpath 中的 appliation.yml 不生效,因为 application.yml 优先级低,很容易被忽略。

问题3: 找不到ch.qos.logback.core.encoder.Encoder.close()V

解决办法:
pom.xml 增加

net.logstash.logback
logstash-logback-encoder
5.2

问题4:Consider renaming one of the beans or enabling overriding by setting

解决方案:application.yml 增加spring.main.allow-bean-definition-overriding=true

问题5:Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.

解决方案:profiles active配置

问题 6:NoClassDefFoundError: org/apache/zookeeper/Watcher E v e n t Event EventKeeperState

解决方案:(原因,ymal dubbo端口未配置,这时会默认使用9090端口,且地址无法解析 。解决办法:加上端口配置)
1、ymal加上:

2、dubbo-config.xml 加上

问题 7:nested exception is java.lang.AbstractMethodError: org.hibernate.validator.engine.ConfigurationImpl.getDefaultParameterNameProvider()Ljavax/validation/ParameterNameProvider;

org.hibernate.validator.engine.ConfigurationImpl.getDefaultParameterNameProvider()Ljavax/validation/ParameterNameProvider;

解决方案:
pom.xml 增加一下依赖

问题 8:eureka获取ip地址失败

问题描述:
解决方案参考:
spring.cloud.client.ipAddress 获取失败
需要引用:

org.springframework.cloud
spring-cloud-commons

在sprigboot2.0之前为在springboot2.0之后改为了

在springboot中使用获取ip时必须导入以上依赖

问题9: 启动SpringBoot 项目服务报错The port may already be in use or the connector may be misconfigured

解决方案:
1、找出占用该端口的进程号:

打开CMD窗口,输入:

netstat -ano|findstr 端口号

2、查到端口号对应的进程号。输入:

taskkill /f /t /im 进程号

问题10: 拦截器,拦截静态资源问题

解决方案参考:

问题11: tk.mybatis.mapper.provider.base.BaseSelectProvider.dynamicSQL

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error invoking SqlProvider method (tk.mybatis.mapper.provider.base.BaseSelectProvider.dynamicSQL).  Cause: java.lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseSelectProvider	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:77)	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)	at com.sun.proxy.$Proxy168.selectList(Unknown Source)	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230)	at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:137)	at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75)	at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)	at com.sun.proxy.$Proxy232.select(Unknown Source)	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:497)	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(Expose

来源:普通网友

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年7月26日
下一篇 2022年7月26日

相关推荐