刚搭建好自己写字的地方,于是将前几年遇到的一些小bug记录挪了过来,当份笔记来看吧。
1.ByteBuffer Bugs
- 现象:
运行时报错如下:1
java.nio.ByteBuffer.rewind()Ljava/nio/ByteBuffer;
- 原因:
基本上是由于,java编译包的版本(9及以上)和运行时的版本(8及以下版本)不一致,例如exchange工程中,其中一个依赖包是自己install在本地的,当时没注意,导致运行时一直报上述错误。
2.maven-shade-plugin
- 问题:
将部分jar包添加或排除
将依赖jar包内部资源添加或排除
自动将所有不使用的类排除
将依赖的类重命名并打包进来 (隔离方案)
修改包的后缀名 - 解决方案:
主要参考一个maven插件的使用博客
3.@RestController& @Controller注解
类似的还有@RestControllerAdvice与@ControllerAdvice,@RestControllerAdvice注解包含了@ControllerAdvice注解和@ResponseBody注解
4.[ERROR] 不再支持源选项 1.5。请使用 1.6 或更高版本
- 问题:
[ERROR] 不再支持源选项 1.5。请使用 1.6 或更高版本。
[ERROR] 不再支持目标选项 1.5。请使用 1.6 或更高版本。
类似的还有报错说没有指定文件的编码格式 - 解决方案:
1
2
3
4
5<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
5.maven打包的问题
- 问题:
有些情况下直接使用idea自带的maven插件进行打包会报一个gpg的错误或者test用例报错 - 解决方案:
使用命令行进行打包,cd e/01work/nebula-java/tools之后,使用mvn clean compile package install deploy -Dgpg.skip -Dmaven.javadoc.skip=true来进行打包安装
mvn clean install -Dgpg.skip -Dmaven.javadoc.skip=true -Dmaven.test.skip=true
6.java8与java11版本问题
- 问题:
springboot启动报错Error creating bean with name ‘xmlModelPlugin’: Lookup method resolution failed; - 解决方案:
添加如下依赖:java8及之前是jdk中自带有这一依赖的,java11之后移除了因此需要自己添加上;或者也可以将项目的java环境切换为java81
2
3
4
5<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
7.springboot启动报mongo相关错误
- 问题:
springboot启动报mongo相关错误:
com.mongodb.MongoSocketOpenException: Exception opening socket
Caused by: java.net.SocketTimeoutException: connect timed out
Caused by: java.net.ConnectException: Connection refused: connect - 解决方案:
前者是有建立连接,但是超时了,因此需要检查配置是否有问题或者mongoDb是否有问题;而后者,则是没有配置mongo连接,springboot自动配置了支持mongodb,在启动springboot时会自动实例化一个mongo实例。其实也不影响程序使用,但是没用mongo却引用了mongo依赖就很奇怪。如果要禁用自动配置则在启动类上加上如下注解即可:1
8.IDEA警告提示参数未覆盖注解
- 问题:
Not annotated parameter overrides @NonNullApi parameter. - 解决方案:
在参数上添加@NonNull注解即可
9.Springboot集成swagger报错
- 问题:
Failed to start bean ‘documentationPluginsBootstrapper’ in spring data rest. - 解决方案:
因为Springfox 使用的路径匹配是基于AntPathMatcher的,而Spring Boot 2.6.X使用的是PathPatternMatcher。
for application.properties:for application.yml:1
spring.mvc.pathmatch.matching-strategy = ANT_PATH_MATCHER
1
2
3
4spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher