繁体   English   中英

ClassNotFoundException:javax.ws.rs.client.ClientBuilder

[英]ClassNotFoundException: javax.ws.rs.client.ClientBuilder

我试图从Web应用程序(eclispe中的动态Web应用程序)中使用Jersey Rest服务,如下所示:

Client client = ClientBuilder.newBuilder().build(); // Here is the error

WebTarget target = client.target("url/rest").path("List");

String result = target.request(MediaType.TEXT_PLAIN).get(String.class);

在ClientBuilder.newBuilder()行中进行调试时,系统抛出ClassNotFoundException:javax.ws.rs.client.ClientBuilder错误,但java项目中的相同代码完美无缺。

完整跟踪:

javax.servlet.ServletException: Error instanciando clase de servlet test
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:655)
    org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Unknown Source)
causa raíz

java.lang.NoClassDefFoundError: javax/ws/rs/client/ClientBuilder
    test.<init>(test.java:27)
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    java.lang.reflect.Constructor.newInstance(Unknown Source)
    java.lang.Class.newInstance(Unknown Source)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:655)
    org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Unknown Source)
causa raíz

java.lang.ClassNotFoundException: javax.ws.rs.client.ClientBuilder
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1324)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1177)
    test.<init>(test.java:27)
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    java.lang.reflect.Constructor.newInstance(Unknown Source)
    java.lang.Class.newInstance(Unknown Source)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:655)
    org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Unknown Source)

所以它来了;)

首先了解:javax.ws.rs.client是RESTFul客户端实现的标准包。 开发人员应该针对此接口进行编程。 在运行时,您需要在类路径中实现此接口。 那就像resteasy或jersey这样的项目进来了。

第二:在eclipse中,buildpath和classpath设置只能影响eclipse中的环境。 当你把东西放在那里时,它只存在于日食中。

第三:根据Java EE webprofile开发Web应用程序时,您可以自动访问应用程序服务器的所有捆绑软件包,如tomcat或jboss。 如果您的应用程序使用更多包,则必须将它们与您的应用程序一起分发。 为此,您可以将第三方jar放在项目中的“WEB-INF / libs”下。 当它部署到您的应用程序服务器时,此文件夹中的jar会自动放置在您的应用程序的类路径中。

第四个(关于您的解决方案):将第三方库放在应用程序服务器库中或者直接认可使它们可以访问部署在此应用程序服务器上的所有应用程序,并为您的应用程序服务器设置和维护增加更多复杂性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM