java.lang.NoSuchMethodError: org.springframework.util.StringUtils.matchesCharacter(Ljava/lang/Str...

1、遇到问题时的情境

首先,在办公室无聊的情况下,打算重新学习一遍springCloud,因为当时学的时候根本不明白其中的意义,所以打算跟着狂神重新学一遍(这里推荐大家哔哩哔哩可以搜-遇见狂神说,对于初学的java小白非常有用!)。好的,跟着视频一步一步写完了,正当运行的时候,问题出现了(其实人家视频中就是好好的,咱也不知道是为什么???好懵逼,是的,很简单的一个springCloud项目我搞了一天,但是在此刻,我已经独立把所有的问题都解决了!!!)

2、看看这个项目有多简单

是的,就是这么简单的项目,我他妈搞了一天!!!

3、将我运行过程中遇到的问题挨个讲解一下并提供解决方法!

3.1 java.lang.NoSuchMethodError: org.springframework.util.StringUtils.matchesCharacter(Ljava/lang/String;C)Z

3.1.1心路历程

其实,不知道是什么问题,因为我其实对springCloud一个整体的学习也不是很精通,所以出了错之后手忙脚乱,其实根本不知道应该怎么解决,于是百度到处搜,首先我这问题可能比较少见,所以基本没搜到几个和我对应的。就算搜到了,那些办法对于我来说一点都不可用,因为我是springCloud项目,所以基本上所有包都被一些启动器给包含在一起了,不是单独的那种jar包!

3.1.2解决办法

我觉得这种某某某文件或者是方法找不到的错误,百分之八十都是因为jar引起的,所以我在百度上搜索了,StringUtils类是在spring-core.jar包中存在的。我去web-inf的lib下专门看了一眼,我有这个包啊,如下图:

是的,他的确是存在的,但是我当时确实没有任何的办法,所以我只能反编译这个5.2.6版本的spring-core.jar中是否有StringUtils.matchesCharacter方法。哦吼!!!确确实实没有,如下图:

于是,我只能修改启动器这一类的所有版本,给他们升到了最高,但是我发现,这些启动器中带的spring-core的版本最高好像就是5.2.6了,没办法,我在maven rep的官网中,找了最高版本的spring-core,如下图:

虽然我的spring-core是被启动器一类自动引入的,但是自动引入的那个spring-core缺少了我要的东西。所以,我单独重新引入了spring-core.5.2.10版本的jar包,果然不报错误了,如下图:

3.2上一个问题终于解决了,内心有点小激动,准备立马去浏览器中查询接口,但是又报错了Invalid bound statement (not found): com.sxw.springcloud.dao.DeptDao.queryDeptByNo

3.2.1心路历程

这个时候我就定位到了是不是我的application.yml文件中mybatis的配置写的有问题,但是各种对比之后,发现这个路径是正确的,但是就是访问不到。这个时候没办法,又只能上淘宝搜索了,其实第一次搜索我就搜索到了答案,我的xml文件并没有被编译,所以这个文件根本找不到!但是,第一次出现这个问题的我,根本都找不到target文件,更不用说这个xml文件有没有被编译,那就更不知道了!所以,开始了找target文件夹的艰难之路,最后,右击项目,show in explore中看到了,的确,没有编译xml文件,所以上百度搜索,解决方案有了!

3.2.2解决办法

在百度搜索到了,在父项目工程中加入以下代码,意思就是xml文件也要加入编译中。OK,成功访问到!!!

<build>

   <resources>

       <resource>

           <directory>src/main/java</directory>

           <includes>

    com/sxw/springcloud/dao/*.xml   # 这个是xml文件的路径,写自己的

           </includes>

       </resource>

       <resource>

           <directory>src/main/resources</directory>

           <filtering>true</filtering>

       </resource>

   </resources>

</build>

3.3如果你的mysql版本比较高的话,记得spring的配置中,要修改成如下图

spring:

  application:

   name: springcloud-provider-dept

  datasource:

   type: com.alibaba.druid.pool.DruidDataSource

   driver-class-name: com.mysql.cj.jdbc.Driver

   url: jdbc:mysql://localhost:3306/springcloud01?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC

   username: root

   password: ****

4、最后想说的话

遇到问题不要急,先预想可能所有的方案,不要立马上百度,因为这样你就少了一个思考的过程!刚开始的路肯定很漫长,但是我相信,只要我们能坚持,日后也会成为大佬!!!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。