Caused by: java.lang.ClassNotFoundException: org.eclipse.yasson.JsonBindingProvider

  • 使用将项目部署到Idea上,利用Tomcat运行发现报错,
    在这里插入图片描述
    详细如下
Caused by: jakarta.json.bind.JsonbException: JSON Binding provider org.eclipse.yasson.JsonBindingProvider not found
		at jakarta.json.bind.spi.JsonbProvider.provider(JsonbProvider.java:97)
		at jakarta.json.bind.JsonbBuilder.create(JsonbBuilder.java:86)
		at org.springframework.http.converter.json.JsonbHttpMessageConverter.<init>(JsonbHttpMessageConverter.java:55)
		at org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter.<init>(AllEncompassingFormHttpMessageConverter.java:91)
		at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.addDefaultHttpMessageConverters(WebMvcConfigurationSupport.java:882)
		at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.getMessageConverters(WebMvcConfigurationSupport.java:843)
		at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.routerFunctionMapping(WebMvcConfigurationSupport.java:558)
		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
		at java.base/java.lang.reflect.Method.invoke(Method.java:568)
		at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:140)
		... 38 more
  • 鉴于这个报错有点离谱+特殊,有必要记录一下

首先,看到这个报错什么eclipse,十分奇怪,不知道为什么会弹出来这个错误,还以为跟eclipse有关,然而答案并不是,网上找也找不到什么解决方案,我的解决方案如下

  1. 添加web项目需要的两个依赖,相信大家都加了,注意点在后面
<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-webmvc</artifactId>
   <version>6.1.4</version>
 </dependency>
 <dependency>
   <groupId>jakarta.platform</groupId>
   <artifactId>jakarta.jakartaee-web-api</artifactId>
   <version>11.0.0-M1</version>
   <scope>provided</scope>
 </dependency>
  1. 需要注意的是这两个依赖,并不能直接用MavenSearch工具直接复制下来的dependency,对于jakarta.jakartaee-web-api这个依赖,一定要加<scope>provided</scope>这一句,否则还是会报错
  2. 需要加入provided的scope原因:因为Tomcat也是有jakarta.jakartaee-web-api这个包的,这样直接不加scope用就会冲突,provided限制了只在编译和测试的时候用,启动Tomcat就不会冲突了
  3. 说到这个冲突,同时还可能是另一个冲突的问题,spring-webmvc和spring-context的冲突问题,我一般是只配置spring-webmvc的依赖,因为其中已经有了spring-context的依赖。这个冲突可能存在两种常见情况
    ①父工程中配置了spring-context,子工程(当前工程)没有配置,但是当前工程配置的spring-webmvc与其版本不同,导致冲突。
    ②当前工程配置了spring-context和spring-webmvc版本不一致。
  4. 通过以上,大致就能解决相关的问题了
  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值