Tomcat 8.5 AbstractMethodError中的Spring Boot Jersey应用程序错误:javax.ws.rs.core.UriBuilder.uri

Tomcat 8.5 AbstractMethodError中的Spring Boot Jersey应用程序错误:javax.ws.rs.core.UriBuilder.uri,java,maven,spring-boot,jersey,jax-rs,Java,Maven,Spring Boot,Jersey,Jax Rs,当我在STS IDE上运行spring boot jersey应用程序作为spring boot应用程序时。它运行没有问题 然而,当我在Tomcat8.5上以WAR的形式部署应用程序时,我得到了以下错误 我在stackoverflow上找到了一些答案,它们指的是用jersey 1.*依赖项调用的JAX-RS 2.0方法。我试图通过排除引用jersey 1.*的pom.xml依赖项来解决这个问题。这没用。我不知道还能做什么 下面是POM <dependencies> <

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

然而,当我在Tomcat8.5上以WAR的形式部署应用程序时,我得到了以下错误

我在stackoverflow上找到了一些答案,它们指的是用jersey 1.*依赖项调用的JAX-RS 2.0方法。我试图通过排除引用jersey 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>

javax.ws.rs

请参考保罗·萨姆索塔的评论

在我的例子中,cxf rt rs security cors版本2.6.1的依赖关系迫使我的应用程序进入jersey 1.x。我通过简单地从pom中删除依赖项修复了这个问题,因为我不需要它

然而,我不确定为什么这个异常只发生在Tomcat8.5上,而不发生在STS IDE嵌入式服务器上


谢谢Paul Samsotha:)

为什么不发布图像中异常的有用部分,而不是发布的无用部分?根据我的经验,当您的代码试图使用1.x,但您强制它使用2.x时,UriBuilder会出现此错误。这就是您使用
cxf rt rs security cors执行的操作。无论你需要什么,都可以使用不同的库。谢谢@PaulSamsotha,你说得对。我在pom.xml上升级了该组件的版本,现在错误500消失了。然而,现在我得到了错误404(我正在检查)。但我的问题仍然是,为什么它在我的IDE上工作,但在Tomcat8.5上却坏了?org.apache.cxf cxf rt rs security cors 3.0.15@palsamsotha异常的有用部分是什么意思?我还修复了404错误。我必须将@Path(“/api”)注释移到@RestController上方。我现在觉得自己好笨。
<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>