我正在尝试创建一个简单的客户端,该客户端可以将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)
有人可以帮我理解为什么我从
org.glassfish.jersey.client.JerseyClientBuilder
清楚地导入时为什么我要寻找import javax.ws.rs.client.ClientBuilder;
的原因。我在代码中的任何地方都没有使用球衣
我正在尝试创建一个简单的客户端,该客户端可以将get请求发送到给定的url。我正在尝试使用javax工具,但遇到奇怪的行为,无法在任何地方找到答案。。我的代码看起来...
ClientBuilder默认使用泽西岛的JerseyClientBuilder类(显然,您必须使用作为ClientBuilder子类的类),因此正在寻找它。我选择使用ResteasyClient执行我的请求。