项目升级记录

Websocket

错误原因

在我升级项目为 springboot3 之后, 就出现了 : org.springframework.web.socket.server.standard.ServerEndpointExporter: Factory method \'serverEndpointExporter\' threw exception with message: jakarta/websocket/DeploymentException

  • 奇怪的是我之前在springboot2 是没有这个问题的🤕

所以我就猜测是不是跟websocket 有关的 依赖是不是版本太低了

解决方案

将所有 WebsocketServer(反正就是websocket 业务的地方) 中 导入包为 javax.xxx 都修改为 jakarta.xxx。这是因为 springboot3 的升级, 对了, 其实 所有的javax.servlet 也要换成jakarta.servlet(可以注意看看你controller层有没有遇到这个问题)

引入依赖

  • 首先引入正确的依赖 jar 包
1
2
3
4
5
6
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
<version>10.1.15</version>
</dependency>

修改导入的包名称

将 javax注释了

image-20231110235233478

换成下面三位兄弟

image-20231110235315740

然后就可以正常运行了

Mybatisplus

错误原因

java.lang.IllegalArgumentException: Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required

Error creating bean with name ‘commonController’: Unsatisfied dependency expressed through field ‘messageService’: Error creating bean with name ‘messageServiceImpl’: Unsatisfied dependency expressed through field ‘baseMapper’: Error creating bean with name ‘messageMapper’ defined in file

大概就是这些问题 但是之前是没有的 。 尝试了 网上 给 启动类加上 MapperScanner也无济于事, 实际上就是版本问题

解决方案

引入依赖

这是我原本的依赖

1
2
3
4
5
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>

把这个 version 版本换成 3.5.3.1

1
2
3
4
5
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>

运行发现 解决问题

版本问题

  • 如果使用 jdk21 的话, 如果出现了

Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field ‘com.sun.tools.

那么请检查你的jdk 版本和你允许的版本是否一致, 比如, 我这设置了运行是1.8, 但是一开始创建的时候jdk为21