jdk17+springboot3+dubbo3.2.0-beta6,报错:java.lang.NoClassDefFoundError: javax/ws/rs/WebApplicationException

5q4ezhmt  于 4个月前  发布在  Spring
关注(0)|答案(7)|浏览(104)

Caused by: java.lang.NoClassDefFoundError: javax/ws/rs/WebApplicationException at org.apache.dubbo.rpc.protocol.rest.RestProtocol.<init>(RestProtocol.java:85) ~[dubbo-3.2.0-beta.6.jar:3.2.0-beta.6] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?] at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?] at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[?:?] at java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[?:?] at org.apache.dubbo.common.beans.support.InstantiationStrategy.instantiate(InstantiationStrategy.java:94) ~[dubbo-common-3.2.0-beta.6.jar:3.2.0-beta.6] at org.apache.dubbo.common.extension.ExtensionLoader.createExtensionInstance(ExtensionLoader.java:832) ~[dubbo-common-3.2.0-beta.6.jar:3.2.0-beta.6] at org.apache.dubbo.common.extension.ExtensionLoader.createExtension(ExtensionLoader.java:791) ~[dubbo-common-3.2.0-beta.6.jar:3.2.0-beta.6]`

RestProtocol类里还引用了
import javax.servlet.ServletContext; import javax.ws.rs.ProcessingException; import javax.ws.rs.WebApplicationException;
三个类,而jdk17里已经没有这三个类了

vuktfyat

vuktfyat2#

javax.servlet.ServletContext
这个来自

javax.servlet
javax.servlet-api
provided

dubbo-dependencies-pom默认指定3.1.0
javax.ws.rs
这个来自

org.jboss.resteasy
resteasy-jaxrs
${resteasy_version}

dubbo-dependencies-bom 默认指定3.0.19.Final

不是jdk自带的api,和jdk版本是没关系的,maven 重新刷新下一看看呢
eivgtgni

eivgtgni3#

这个类在dubbo3.2.0-beta7都会被移除

wko9yo5t

wko9yo5t4#

javax.servlet.ServletContext
这个来自

javax.servlet
javax.servlet-api

不是jdk自带的api,和jdk版本是没关系的

上述这句话没错,但是springboot3已经不使用javax了,取而代之的是Jakarta-api,因此报错。

如果dubbo3.2.0要支持springboot3的话,需要废弃所有跟javax有关的api

f87krz0w

f87krz0w5#

dubbo rest 后面不使用servlet来实现了 ,就没有这个问题了,现在改造中, servlet 的使用在dubbo3.2.0-beta7都会被移除

bpsygsoo

bpsygsoo6#

配置文件直接设置 dubbo.application.service-discovery.migration=FORCE_APPLICATION 这个设置方式在3版本无法兼容2版本

vmpqdwk3

vmpqdwk37#

配置文件直接设置 dubbo.application.service-discovery.migration=FORCE_APPLICATION 这个设置方式在3版本无法兼容2版本

Dubbo 2 的应用级服务发现很多设计有缺陷,不建议使用 Dubbo 2 的应用级服务发现

相关问题