Reputation: 5379
I have implemented an API integration with Jersey 2.4 but i have a problem when try to start my 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)
maybe there is a conflict on use of UriBuilder that it's referenced in javax.ws.rs.core and UriBuilderImpl in org.apache.cxf.jaxrs.impl. If i rename cxf-2.6.0.jar in my WEB-INF\lib as zxf-2.6.0.jar (to load as last), all works fine.
How could i solve that problem in an elegant way?
Upvotes: 2
Views: 1953
Reputation: 516
Yes, it is definitely UriBuilder conflict and when you rename cxf jar you change lookup order making correct version to come first. I would recommend to use Maven for dependency management where one can use exclude tag for unwanted sub-dependency.
Upvotes: 1