记录我开发时遇到的各种坑
1.报错java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
使用springboot和token进行jwt登录的时候报错
原因:网上都说是jdk版本太高了
JAXB API是java EE 的API,因此在java SE 9.0 中不再包含这个 Jar 包。
java 9 中引入了模块的概念,默认情况下,Java SE中将不再包含java EE 的Jar包而在 java 6/7 / 8 时关于这个API 都是捆绑在一起的
结论:jar包中缺少这一依赖-javax.xml.bind.api
解决方案:
导入该依赖即可
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
2.配置public.upload时,出现404
注意:resource下创建子目录需要/而不是.
这样编译出来的项目才会有层级
3.Cannot determine value type from string
数据库字段与实体类字段不一致而导致的
检查修改即可
4.java.sql.SQLSyntaxErrorException: Unknown column 'introduction' in 'field list'
同样是数据库字段和实体类字段不一致而导致的
5.Swagger-ui扫描不到api接口
上面的仅仅扫描了ApiOperation注解,要使用下面的扫描controller
6.图片无法上传
原因:在使用图片上传拼接文件名字时少了最后的/
错误的
正确的
将图片文件保存到编译好的class文件里面
即可完成文件上传啦
7.java.sql.SQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails
很简单的报错,就是sql字段和数据表中的字段不一致或者字段重复而造成的,对实体类或者数据库字段进行检查修改即可
8.Cannot deserialize value of type `java.time.LocalDateTime` from String "2014-06-21 21:46:47": Failed
localdatetime的报错,传递的是Json类型的数据,进而传递过去的参数是字符串类型的时间。
传递的是Json类型的数据,进而传递过去的参数是字符串类型的时间。
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") private LocalDateTime beginTime;
使用此注解需要引入Jackson的依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.12.0</version>
</dependency>
9.使用redis缓存mybatis-plus的ipage对象 报错
原因在于redis不能强转为复杂对象,只能转换为简单的对象,故想要对ipage对象进行缓存,需要将对象进行拆分缓存进redis,拿出来的时候再进行组装即可。