Maven在使用javax(调用接口)时寻找Jersey依赖项



我正在尝试创建一个简单的客户端,可以将get请求发送到给定的url。 我正在尝试使用javax工具,但遇到了奇怪的行为,我在任何地方都找不到答案。

我的代码如下所示:

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Invocation;
import javax.ws.rs.client.Invocation.Builder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
public static Response processRequest(String url, String method) {
Client client = ClientBuilder.newClient(); // (Http.java:44)
WebTarget target = client.target(url);
Builder builder = target.request();
builder.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
Invocation Invo = builder.buildGet(); 
Response res = Invo.invoke();
return res;
}

如您所见,我正在使用javax.ws.rs.core库,所有相关依赖项都在pom中.xml

这里的奇怪问题是,当我执行代码时,它失败并出现以下错误 -

java.lang.RuntimeException: java.lang.ClassNotFoundException: org.glassfish.jersey.client.JerseyClientBuilder
at javax.ws.rs.client.ClientBuilder.newBuilder(ClientBuilder.java:110)
at javax.ws.rs.client.ClientBuilder.newClient(ClientBuilder.java:121)
at scr.cps.utils.Http.processRequest(Http.java:44)
at scr.cps.utils.Http.doGet(Http.java:69)
at scr.cps.Main.main(Main.java:29)
Caused by: java.lang.ClassNotFoundException: org.glassfish.jersey.client.JerseyClientBuilder
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at javax.ws.rs.client.FactoryFinder.newInstance(FactoryFinder.java:111)
at javax.ws.rs.client.FactoryFinder.find(FactoryFinder.java:209)
at javax.ws.rs.client.ClientBuilder.newBuilder(ClientBuilder.java:94)

有人可以帮助我理解为什么当我清楚地从import javax.ws.rs.client.ClientBuilder;导入时,我正在寻找org.glassfish.jersey.client.JerseyClientBuilder..我没有在我的代码中的任何位置使用球衣

ClientBuilder默认使用 jersey 的 JerseyClientBuilder 类(显然您必须使用作为 ClientBuilder 子类的类(,因此正在寻找它。 我选择使用ResteasyClient来执行我的请求。

我添加了依赖项 -

<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.0.1</version>
</dependency>

并验证了 jar 是否已添加到我的存储库中 它有效!:)

最新更新