春云netflix球衣版冲突

时间:2015-04-23 04:34:21

标签: java spring jersey spring-boot spring-cloud

您好我有一个使用

的Spring启动应用程序
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jersey</artifactId>
    </dependency>

这取决于Jersey版本2.7。

尝试使用时

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

内部使用Jersey版本1.1,应用程序失败 同一个库的两个不同版本。

有关如何解决此问题的任何建议,我曾尝试仅使用版本2.7,但它们似乎彼此不兼容

由于

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

4 个答案:

答案 0 :(得分:3)

通过指定以下内容,我已经通过Spring云实现了Jersey 2和Eureka客户端的设置:

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

但唯一的问题是测试尚未运行。但我们仍在努力找到问题的完整解决方案。

答案 1 :(得分:0)

嗯,那不好。泽西岛1和2显着不同。我认为你唯一的选择是将spring-boot-starter-jersey和代码移除到Jersey 1.1。

看看spring-boot-starter-jersey代码可能值得看看它在自动配置时给你的东西,这可能对你的编码有所帮助。

非常不幸,因为Spring引导应该为您提供一组策划的,兼容的依赖项,但看起来spring-cloud-starter-eureka还没有被折叠到Spring引导中,所以你很难使用旧的API。

答案 2 :(得分:0)

我设法解决了我的问题,这不是最好的,但它有效,我已经制作了一个脱模版本的库,用cxf库替换了jersey客户端,它运行得很好。

https://github.com/MicroIdeas/service-registry/tree/master/src/main/java/co/microideas/framework

答案 3 :(得分:0)

我遇到了同样的问题,直到我将spring-boot-starter-jersey移动到依赖项的顶部。这似乎彻底治愈了它。