2

我已经实现了与 Jersey 2.4 的 API 集成,但是在尝试启动我的 tomcat 时遇到了问题

SEVERE: Servlet.service() for servlet [Jersey REST Service] in context with path [] 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 org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:286)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:218)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:81)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

也许在使用 UriBuilder 时存在冲突,它在 javax.ws.rs.core 和 org.apache.cxf.jaxrs.impl 中的 UriBuilderImpl 中引用。如果我将 WEB-INF\lib 中的 cxf-2.6.0.jar 重命名为 zxf-2.6.0.jar(最后加载),一切正常。

我怎样才能以优雅的方式解决这个问题?

4

1 回答 1

1

是的,这绝对是 UriBuilder冲突,当您重命名 cxf jar 时,您会更改查找顺序,使正确的版本排在第一位。我建议使用Maven进行依赖管理,其中可以使用排除标记来处理不需要的子依赖。

于 2013-11-30T09:23:07.017 回答