【问题标题】:Spring Boot Jersey App Error in Tomcat 8.5 AbstractMethodError: javax.ws.rs.core.UriBuilder.uriTomcat 8.5 AbstractMethodError 中的 Spring Boot Jersey 应用程序错误:javax.ws.rs.core.UriBuilder.uri
【发布时间】:2019-08-30 13:24:03
【问题描述】:

当我在 STS IDE 上将 spring boot jersey 应用程序作为 spring boot 应用程序运行时。它运行没有问题。

IDE

但是,当我在 tomcat 8.5 上将应用程序部署为 WAR 时,出现以下错误

exception

javax.servlet.ServletException: Servlet execution threw an exception
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:108)
org.springframework.boot.web.support.ErrorPageFilter.forwardToErrorPage(ErrorPageFilter.java:183)
org.springframework.boot.web.support.ErrorPageFilter.handleException(ErrorPageFilter.java:166)
org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:130)
org.springframework.boot.web.support.ErrorPageFilter.access$000(ErrorPageFilter.java:59)
org.springframework.boot.web.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:90)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:108)

我在 stackoverflow 上找到了一些答案,它们指的是使用 jersey 1.* 依赖项调用的 JAX-RS 2.0 方法。我试图通过排除引用球衣 1.* 的 pom.xml 依赖项来解决此问题。这不起作用。我不知道还能做什么。

下面的POM

<dependencies>
   <dependency>
      <groupId>javax.ws.rs</groupId>
      <artifactId>javax.ws.rs-api</artifactId>
      <version>2.1</version>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jersey</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-orm</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-rest</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework.data</groupId>
      <artifactId>spring-data-rest-hal-browser</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-hateoas</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-configuration-processor</artifactId>
      <optional>true</optional>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
   </dependency>
   <dependency>
      <groupId>com.oracle</groupId>
      <artifactId>ojdbc7</artifactId>
      <version>12.1.0.2</version>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jdbc</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
   </dependency>
   <dependency>
      <groupId>com.zaxxer</groupId>
      <artifactId>HikariCP</artifactId>
   </dependency>
   <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.4</version>
   </dependency>
   <dependency>
      <groupId>com.fasterxml.jackson.jaxrs</groupId>
      <artifactId>jackson-jaxrs-json-provider</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <scope>compile</scope>
   </dependency>
   <dependency>
      <groupId>commons-validator</groupId>
      <artifactId>commons-validator</artifactId>
      <version>1.4.1</version>
   </dependency>
   <dependency>
      <groupId>com.microsoft.sqlserver</groupId>
      <artifactId>mssql-jdbc</artifactId>
      <version>6.1.0.jre8</version>
      <exclusions>
         <exclusion>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
         </exclusion>
      </exclusions>
   </dependency>
   <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-rt-rs-security-cors</artifactId>
      <version>2.6.1</version>
      <exclusions>
         <exclusion>
            <groupId>javax.ws.rs</groupId>
            <artifactId>jsr311-api</artifactId>
         </exclusion>
      </exclusions>
   </dependency>
</dependencies>

下面的类

class1 class2

【问题讨论】:

  • 为什么不发布您在图像中的异常的有用部分,而不是发布您发布的useless部分?
  • 根据我的经验,当您的代码尝试使用 1.x,但您强制它使用 2.x 时,UriBuilder 会出现此错误。这就是您对cxf-rt-rs-security-cors 所做的事情。使用不同的库来满足您的需要。
  • 谢谢@PaulSamsotha,你是对的。我在 pom.xml 上升级了该组件的版本,现在错误 500 消失了。但是,现在我收到错误 404(我正在检查这个。)。但是我的问题仍然存在,为什么它在我的 IDE 上可以工作,但在 tomcat 8.5 上却坏了? org.apache.cxfcxf-rt-rs-security-cors3.0.15
  • @PaulSamsotha 异常的有用部分是什么意思?
  • 我也修复了 404 错误。我必须将 @Path("/api") 注释移到 @RestController 上方。我现在感觉很笨。

标签: java maven spring-boot jersey jax-rs


【解决方案1】:

请参考 Paul Samsotha 的评论。

在我的情况下,cxf-rt-rs-security-cors 2.6.1 版依赖项迫使我的应用程序进入 jersey 1.x。我通过简单地从 pom 中删除依赖项来解决这个问题,因为我不需要它。

但是,我不确定为什么这个异常只发生在 tomcat 8.5 而不是 STS IDE 嵌入式服务器上。

谢谢保罗·萨姆索塔 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-17
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    • 2017-05-10
    • 2021-10-05
    相关资源
    最近更新 更多