java - URI 生成器的 AbstractMethodError

标签 java jersey jax-rs

我刚刚尝试关注 this为我的 Web 服务实现基于 token 的身份验证的教程,刚刚完成了“保护 REST 端点”步骤,但现在在调用端点时我总是收到 AbstractMethodError。

我已经读过 another question这个问题似乎是由于库的兼容性问题而发生的,但答案包括 Maven,我没有使用它,所以我尝试手动交换库,但这没有成功,我不断收到相同或不同的错误。

我必须删除哪些库以及必须保留哪些库?

Current Libraries

控制台输出:

   SCHWERWIEGEND: Servlet.service() for servlet [jersey-servlet] in context with path [/FM] threw exception [Servlet execution threw an exception] with root cause
java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder;
    at javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:662)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

最佳答案

您的问题可能已得到解决,但实际问题是

uri 方法是 JAX-RS 规范 2.0 版本中 UriBuilder 中的一个抽象方法。

您正在尝试将 JAX-RS 2.0Jersey 1.* 结合使用。相反,您需要使用实现 JAX-RS 2.0 并包含 uri 方法实现的 Jersey 2.*

关于java - URI 生成器的 AbstractMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47931094/

相关文章:

java - 如何让 Jersey/Jackson 序列化空列表;单个元素列表作为数组

java - Retrofit 2 根据请求将对象转换为 Json

java - 在安卓中创建视频

java - 未找到原生的实现

jersey - JAX-RS/Jersey 2 文件下载 - 是否有服务器和生成的客户端代理的通用 API

java - 如何使用 jersey 和 json 在 java 中检索 Restful Web 服务的有效负载数据

java - 对耳内的多个 Web 应用程序使用一种身份验证

javascript - AngularJS:用户可以注册两次,如何防止这种情况?

java - 在logstash中使用jdbc输入插件时的时间变化

java - 为什么 scheduleAtFixedRate - scheduleWithFixedDelay 方法不使用 Callable<V>