1. 程式人生 > >Jersey-Spring整合:java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)..

Jersey-Spring整合:java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)..

Jersey與Spring整合時報的錯誤:

java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder;


專案新建採用如下方式,自動生成了一些檔案和配置:


pom.xml中預設會匯入如下依賴包:


web.xml中會有預設servlet配置如下:


按照此方式生成的專案,將spring整合進來,匯入依賴包,如下:


執行放到tomcat中能正常啟動,但是訪問介面時丟擲異常如上所述。

問題就出現在自動生成這部分配置中,因為引入了jersey-spring的jar,內部有jersey-server/core等依賴,出現UriBuilder衝突,剛開始不知道衝突原因,後來debug發現是自動生成那兩個依賴container和media都有這個東西。

解決方案:

        1. 首先要將pom.xml中自動生成的這兩個依賴去掉。

         2. 在web.xml中自動生成的servlet換掉,使用jersey-spring中的Springservlet,下面有截圖。

publish - 重啟專案,就正常了。由於預設生成的可能修改時候不太注意,所以容易漏掉所以手動建立後集成spring時一定要注意!

關於整合後接口返回Json格式資料的支援:

在SpringServlet或者其父類裡面找相關的配置,可以在啟動時初始化的web.xml引數init-param,其中com.sun.jersey.config.property.resourceConfigClass是resourceConfig類的配置,可以自己實現,預設使用DefaultResourceConfig類作為預設配置。當需要使用json資料時,需要註冊Json處理類,這時要自定義config類繼承自ResourceConfig或者DefaultResourceConfig都可以,然後在web.xml中配置如下:


實現類如下:新增一個json處理類(需要引入以來包jackson相關的)


根源上是javax.ws.rs.core.UriBuilder衝突,在jersey-spring內部依賴jsr311-api的jar和jersey-container-grizzly2-http內部依賴的javax.ws.rs-api的jar衝突。它們倆都是實現UriBuilder,javax.ws.rs裡面實現是UriBuilderImpl, jsr311裡面的實現是JerseyUriBuilder。依賴的介面和實現不同,所以衝突。

剛接觸Jersey,比較粗心大意,問題遇到的或許比較低階,所以記錄一下,不對的地方請指正。程式猿拜上!


相關推薦

Jersey-Spring整合java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)..

Jersey與Spring整合時報的錯誤:java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String

java.lang.NoClassDefFoundError:javax/ws/rs/ext/MessageBodyWorkers

由於 error found alt ice class 地址 myeclips jar   今天在使用RESTful Web Service過程中,報出了這個問題。      這個問題在官網有一些說明,在使用新版本的JAX-RS包時,相應的CXF包也應該使用較新版本。由於

報錯Spring整合Hibernate java.lang.NullPointerException

Exception in thread "main" java.lang.NullPointerExceptionat com.ye.service.impl.AddressServiceImpl.addAddress(AddressServiceImpl.java:32)

java lang AbstractMethodError javax servlet jsp JspFactory

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/

我匯入雲筆記專案的時候,在專案啟動的時候,包了這個錯,我試著使用下面的方法能夠解決問題,而且可以正常啟動專案, 第一步刪除衝突的jar包 https://blog.csdn.net/testcs_dn/article/details/39582939 刪除這兩個jar包之後,還是

資源整合java基礎課程第一天

nds his java 不能 1.7 public hello 單行 bst jdk的安裝配置 (1)JAVA_HOME E:\Java\jdk1.7.0 (2) path %JAVA_HOME%\bin; CMD

手寫springJava反射獲取類和物件資訊全解析

反射在這裡的作用就是知道全路徑 在框架啟動的時候把類例項化 然後設定到@service 和@Autowired裡面 所以要了解這東西怎麼用的 1. 什麼是類物件 類物件,就是用於描述這種類,都有什麼屬性,什麼方法的 2. 獲取類物件 獲取類物件有3種方式 (1). Class.f

異常java.lang.NoSuchMethodError: org.springframework.core.GenericTypeResolver.resolveTypeArguments(Ljava/lang/Class;Ljava/lang/Class;)[Ljava/lang/Class;

java.lang.NoSuchMethodError: org.springframework.core.GenericTypeResolver.resolveTypeArguments(Ljava/lang/Class;Ljava/lang/Class;)[Ljava/lang/Class;

java.lang.NoSuchMethodError: org.apache.commons.validator.Validator.setParameter(Ljava/lang/String;Ljava/lang/Object;)V解決方法

ERROR 2009-07-16 11:29:49 org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/zxtest].[action] Servlet.service() for servlet a

cxf之java.lang.NoSuchMethodError: org.springframework.aop.support.AopUtils.isCglibProxyClass(Ljava/lang/C

樓主好懶,主要還是jar版本的問題,spring4.2.0以上需要使用cxf3.0.0以上的版本 看了一下cxf的相關pom檔案確實是版本陳舊........ <!-- cxf begin -

【轉】@javax.ws.rs Webservice註解

.get tracking 技術 center int 綁定 客戶 資源 csdn 用於webservice。 1.路徑 @javax.ws.rs.Path 標識要請求的資源類或資源方法的uri路徑。 例,@Path("animal"),表示下一層路徑是animal時要處理

javax.?ws.?rs

sap etc 其他 () 查詢參數 ant teacher mat [] public class RestJaxRsServer { public static void main(String[] args) throws Exception {

【Developer Log】javax ws rs實現Restful

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

NoSuchMethodError: org.springframework.core.MethodParameter.hasMethodAnnotation(Ljava/lang/Class;)Z

spring報錯 org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.

@javax.ws.rs Webservice註解

用於webservice。 1.路徑 @javax.ws.rs.Path 標識要請求的資源類或資源方法的uri路徑。 例,@Path("animal"),表示下一層路徑是animal時要處理的事務。 @Path("{species}")這種帶大括號的表示方法,表示下一層路徑

整合spring和mybatis時,異常java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTrans

觸發原因:單方面升級mybatis版本。 mybatis、mybatis-spring版本如下: <dependency> <groupId>org.mybatis</groupId> <artifa

Spring整合mybatisCaused by: java.lang.IllegalArgumentException錯誤

java.lang.IllegalArgumentException     at org.springframework.asm.ClassReader.<init>(Unknown Source)     at org.springframew

Spring Boot 整合 log4j 實現日誌管理報錯java.lang.IllegalArgumentException: LoggerFactory is not a Logback

問題: Caused by: java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Log

spring整合mybatis遇到的bug java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

如果 spring tis per div prop seda bat required 出bug的原因:mybatis-spring版本問題。 查看SqlSessionDaoSupport源碼 1.2以上的版本: 1.1.1版本: 解決方法:1.2版本移除了

spring MVC 報錯java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet

重新 chain http1 accesslog instance report ppc springmvc bstr 嚴重: Allocate exception for servlet SpringMVCjava.lang.ClassNotFoundExceptio