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