2015-04-23 16 views
5

Xin chào Tôi có một ứng dụng khởi động mùa xuân đó là sử dụngmùa xuân đám mây Netflix jersey phiên bản xung đột

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-jersey</artifactId> 
    </dependency> 

này phụ thuộc vào Jersey phiên bản 2.7.

Khi cố gắng sử dụng

<dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-starter-eureka</artifactId> 
</dependency> 

Đó nội bộ sử dụng Jersey phiên bản 1.1, các ứng dụng vẫn thất bại cho hai phiên bản khác nhau của cùng một thư viện.

Bất cứ lời khuyên làm thế nào để khắc phục vấn đề này, tôi đã cố gắng sử dụng chỉ có phiên bản 2.7 nhưng họ có vẻ là không tương thích mỗi khác

Cảm ơn

java.lang.NoSuchMethodError: javax.ws .rs.core.Application.getProperties() Ljava/util/Map; tại org.glassfish.jersey.server.ApplicationHandler. (ApplicationHandler.java:303) tại org.glassfish.jersey.server.ApplicationHandler. (ApplicationHandler.java:284) tại org.glassfish.jersey.servlet.WebComponent. (WebComponent.java:311) tại org.glassfish.jersey.servlet.ServletContainer.init (ServletContainer.java:168) tại org.glassfish.jersey.servlet.ServletContainer.init (ServletContainer.java:358) tại javax .servlet.GenericServlet.init (GenericServlet.java:158) tại io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed (LifecyleInterceptorInvocation.java:117) tại io.undertow.servlet.core.ManagedServlet $ DefaultInstanceStrategy.start (ManagedServlet .java: 220) tại io.undertow.servlet.core.ManagedServlet.get Servlet (ManagedServlet.java:163) tại io.undertow.servlet.handlers.ServletHandler.handleRequest (ServletHandler.java:84) tại io.undertow.servlet.handlers.FilterHandler.handleRequest (FilterHandler.java:82)

+1

Bạn đang cố gắng sử dụng cả hai phụ thuộc này cùng một lúc? –

+0

Có, toàn bộ dự án của tôi đang sử dụng JAX-WS để triển khai các dịch vụ và ứng dụng đám mây mùa xuân cho eureka đang sử dụng giống nhau nhưng trong phiên bản cũ hơn. – user2818032

Trả lời

0

Hmm, điều đó không tốt. Jersey 1 và 2 có sự khác biệt đáng kể. Tôi nghĩ rằng lựa chọn duy nhất bạn có là để loại bỏ spring-boot-starter-jersey và mã sang Jersey 1.1.

Có thể đáng xem mã khởi động-bộ khởi động-áo để xem nó cung cấp gì khi nó tự động định cấu hình nội dung, điều này có thể giúp bạn trong quá trình mã hóa. Nó rất đáng tiếc, vì Spring boot được cho là cung cấp cho bạn một bộ phụ thuộc tương thích, nhưng có vẻ như spring-cloud-starter-eureka chưa được xếp vào Spring boot, vì vậy bạn bị mắc kẹt khi sử dụng một API cũ.

+0

Vấn đề là eureka phụ thuộc vào áo 1. Đây không phải là một vấn đề với khởi động mùa xuân hoặc quản lý phụ thuộc của nó. – spencergibb

+0

Vâng, đó có vẻ là giải pháp duy nhất, nhưng tôi thực sự yêu sự đơn giản của các phiên bản mới nhất của áo, tôi có một bộ lọc bảo mật tùy chỉnh. Một thực tế là những phiên bản cũ của áo không có hỗ trợ mùa xuân. – user2818032

+0

Tôi đã thử Consul client và nó gặp vấn đề tương tự, được đưa ra là sử dụng một số thư viện Netflix. Xui xẻo. Tôi tìm thấy một khách hàng http cho lãnh sự có sử dụng thư viện máy khách apache, tôi sẽ cung cấp cho nó một thử, không phải là mùa xuân đám mây thân thiện nhưng là khởi động mùa xuân thân thiện Tôi cho rằng nên là enought – user2818032

3

tôi đã nhận được thiết lập với Jersey 2 và Eureka khách hàng tất cả thông qua đám mây mùa xuân để làm việc bằng cách xác định như sau:

<plugin> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-maven-plugin</artifactId> 
     <configuration> 
      <excludes> 
       <exclude> 
        <groupId>javax.ws.rs</groupId> 
        <artifactId>jsr311-api</artifactId> 
       </exclude> 
      </excludes> 
     </configuration> 
    </plugin> 

Vấn đề duy nhất mặc dù là các bài kiểm tra chưa chạy. Nhưng chúng tôi vẫn đang cố gắng tìm một giải pháp đầy đủ cho vấn đề này.

0

Tôi đã có cùng một vấn đề, cho đến khi tôi chuyển mùa xuân-boot-khởi-jersey để phía trên cùng của sự phụ thuộc. Điều đó dường như chữa khỏi nó hoàn toàn.

Các vấn đề liên quan