WebClient 实现 - 执行这段代码“WebClient.builder().build()”时出现错误

Posted

技术标签:

【中文标题】WebClient 实现 - 执行这段代码“WebClient.builder().build()”时出现错误【英文标题】:WebClient implementation - While executing this piece of code "WebClient.builder().build()" I am getting error 【发布时间】:2021-07-26 01:04:30 【问题描述】:

WebClient.builder().build()WebClient.create

我收到以下错误。任何建议都非常感谢。

java.lang.NoClassDefFoundError: org/springframework/http/client/reactive/ClientHttpConnector

在 org.springframework.web.reactive.function.client.WebClient.builder(WebClient.java:154) 在 com.cooperlighting.iot.sample.SampleTest.resend_withSuccessful(SampleTest.java:38) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.base/java.lang.reflect.Method.invoke(Method.java:566) 在 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) 在 org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 在 org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 在 org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 在 org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) 在 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) 在 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) 在 org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 在 org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 在 org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 在 org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 在 org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 在 org.junit.runners.ParentRunner.run(ParentRunner.java:363) 在 org.junit.runner.JUnitCore.run(JUnitCore.java:137) 在 com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) 在 com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) 在 com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220) 在 com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53) 引起:java.lang.ClassNotFoundException:org.springframework.http.client.reactive.ClientHttpConnector 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ... 24 更多

【问题讨论】:

我正在尝试使用 WebClient 进行休息 API 调用,我正面临上述问题。任何建议都非常感谢。 尝试添加spring-boot-starter-web,然后重试。 @BishalGautam - 感谢您的建议。我尝试过这个。直到没有工作。 你能分享你的 pom.xml @CodeLearn @BishalGautam-sure。但是太长了。有没有其他方法可以发给你 【参考方案1】:
java.lang.NoClassDefFoundError

这通常发生在没有为给定类附加依赖项的情况下。尝试添加

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>

还要检查下载的 jar 文件并从 jar 中跟踪到类名。

【讨论】:

以上是关于WebClient 实现 - 执行这段代码“WebClient.builder().build()”时出现错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring Boot 2 WebClient 从响应中获取标头

WebClient-Reactor风格的异步调用

websocket通信 实现java模拟一个client与webclient通信

如何使用 Spring webflux 向 webclient 发送实时进度?

WebClient 未向 Windows Phone 中的 Web 服务发送授权标头

Spring WebClient vs. RestTemplate