2015-04-23 11 views
5

Hallo Ich habe eine Frühlings Boot-Anwendung, die auf Jersey Version 2,7Federwolke netflix Jersey Versionskonflikt

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

Dies ist abhängig verwendet.

Wenn

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

zu verwenden versuchen, die intern verwendet Jersey Version 1.1, schlägt die Anwendung die zwei verschiedenen Versionen derselben Bibliothek gegeben.

irgendwelche Ratschläge, wie dieses Problem zu beheben, ich habe nur die Version 2.7 zu verwenden versucht, aber sie scheint nicht kompatibel each-anderen

Dank

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

+1

Versuchen Sie, beide Abhängigkeiten gleichzeitig zu verwenden? –

+0

Ja, mein gesamtes Projekt verwendet JAX-WS für die Implementierung der Dienste und der Spring Cloud-Client für Eureka verwendet dasselbe, aber in einer älteren Version. – user2818032

Antwort

0

Hmm, das ist nicht gut. Jersey 1 und 2 unterscheiden sich signifikant. Ich denke, die einzige Option, die Sie haben, ist, Spring-Boot-Starter-Trikot und Code zu Jersey 1.1 zu entfernen.

Es könnte sich lohnen, sich den Spring-Boot-Starter-Trikot-Code anzuschauen, um zu sehen, was er Ihnen bei der automatischen Konfiguration bietet, was Ihnen bei der Codierung helfen könnte.

Es ist sehr bedauerlich, da Spring Boot Ihnen eine kuratierte, kompatible Reihe von Abhängigkeiten geben soll, aber es sieht so aus, als wäre Spring-Cloud-Starter-Eureka nicht in Spring-Boot gefaltet worden eine alte API.

<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> 

Das einzige Problem ist aber, dass die Tests laufen noch nicht:

+0

Das Problem ist, dass Eureka auf Trikot 1 angewiesen ist. Dies ist kein Problem mit Spring Boot oder seine Abhängigkeitsverwaltung. – spencergibb

+0

Ja, das scheint die einzige Lösung zu sein, aber ich liebe wirklich die Einfachheit der neuesten Versionen von Jersey, ich habe einen benutzerdefinierten Sicherheitsfilter. Ein auch die Tatsache, dass diese ältere Version von Jersey keine Federunterstützung hat. – user2818032

+0

Ich hatte Consul-Client versucht und es leidet das gleiche Problem, da einige Netflix-Bibliotheken verwendet werden. Pech. Ich habe einen HTTP-Client für Consul gefunden, der Apache-Client-Bibliotheken verwendet, ich werde es versuchen, ist nicht Frühling Cloud-freundlich, aber ist Spring Boot freundlich Ich nehme an, dass sollte genug sein – user2818032

3

Ich habe das Setup mit Jersey 2 und Eureka-Client alle durch Federwolke durch Angabe der folgenden Arbeit bekommen. Aber wir versuchen immer noch, eine vollständige Lösung für das Problem zu finden.

0

ich das gleiche Problem hatte, bis ich Feder-boot-Starter-Trikot an die Spitze der Abhängigkeiten bewegt. Das scheint es vollständig zu heilen.

Verwandte Themen