java.lang.NoClassDefFoundError: org / glassfish / jersey / interno / inject / Binder quando iniciado Servidor Tomcat

Eu estou construindo API REST em Java com Jersey e Maven. Eu usei o Tomcat 9 como meu servidor. Tudo funciona bem até que eu tentei instalar RestAssured, Hamcrest e JUnit hoje. De repente, todos os meus endpoints eliminaram 500 erros internos do servidor. A causa raiz do erro 500 é java.lang.NoClassDefFoundError: org/glassfish/jersey/internal/inject/Binder.

O que eu fiz isso duas horas:

  • Eu tentei encontrar essa class: org/glassfish/jersey/internal/inject/Binder no google, mas sem sucesso.
  • Eu tentei desinstalar o RestAssured , Hamcrest e JUnit, mas isso não ajudou.

Esse problema me deixa frustrado. Alguma idéia de por que esses erros aconteceram? Desde já, obrigado!

Aqui está o trecho do log do servidor:

SEVERE: Alocar exceção para o servlet Jersey Web Application java.lang.ClassNotFoundException: org.glassfish.jersey.internal.inject.Binder em org.apache.catalina.loader.WebappClassLoaderBase.loadClass (WebappClassLoaderBase.java:1275) em org.apache. catalina.loader.WebappClassLoaderBase.loadClass (WebappClassLoaderBase.java:1109) em org.glassfish.jersey.servlet.ServletContainer.init (ServletContainer.java:178) em org.glassfish.jersey.servlet.ServletContainer.init (ServletContainer.java: 370) em javax.servlet.GenericServlet.init (GenericServlet.java:158) em org.apache.catalina.core.StandardWrapper.initServlet (StandardWrapper.java:1183) em org.apache.catalina.core.StandardWrapper.loadServlet (StandardWrapper .java: 1099) em org.apache.catalina.core.StandardWrapper.allocate (StandardWrapper.java:779) em org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:133) em org.apache.catalina. core.StandardContextValve.invoke (StandardContextValve.java:96) em org.apache.catalina.authe nticator.AuthenticatorBase.invoke (AuthenticatorBase.java:475) em org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:140) em org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:80) em org.apache.catalina.valves.AbstractAccessLogValve.invoke (AbstractAccessLogValve.java:624) em org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:87) em org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:341) em org.apache.coyote.http11.Http11Processor.service (Http11Processor.java:498) em org.apache.coyote.AbstractProcessorLight.process (AbstractProcessorLight.java:66) em org.apache.coyote. AbstractProtocol $ ConnectionHandler.process (AbstractProtocol.java:796) em org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java:1368) em org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:49) em java.util.concurrent.ThreadPoolExecutor.runWorker (Unknown Source) em java.util.concurrent.Threa dPoolExecutor $ Worker.run (Origem Desconhecida) em org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) em java.lang.Thread.run (Origem Desconhecida)

Abaixo está meu arquivo pom.xml : (com RestAssured, Hamcrest e JUnit)

   org.glassfish.jersey.containers jersey-container-servlet-core     org.glassfish.jersey.media jersey-media-moxy   com.google.code.gson gson 2.8.0   mysql mysql-connector-java 5.1.6   junit junit 4.12 test   org.hamcrest hamcrest-all 1.3 test   com.jayway.restassured rest-assured 2.9.0 test   

Abaixo está o meu arquivo web.xml:

   Jersey Web Application org.glassfish.jersey.servlet.ServletContainer  jersey.config.server.provider.packages com.accelbyte.vincent.emailist.resources  1   Jersey Web Application /webapi/*  

Abaixo está minha estrutura de projeto:

Estrutura do projeto de lista de e-mail

É muito provável que haja uma incompatibilidade de versão entre o núcleo Jersey e uma das bibliotecas de extensão Jersey que importam essa class Binder. Certifique-se de que todos os módulos relacionados a Jersey tenham versões explícitas (e eles correspondem um ao outro). Ou melhor ainda, corrija suas versões importando o jersey-bom. Por exemplo:

    org.glassfish.jersey jersey-bom 2.26-b03 pom import    

Depois disso, sua seção principal pode omitir as versões.

Eu enfrentei o mesmo problema com o uso de versões diferentes. Certifique-se de que suas versões Jersey-bean-validation e Jersey-container-servlet sejam as mesmas.

  org.glassfish.jersey.containers jersey-container-servlet 2.22    org.glassfish.jersey.ext jersey-bean-validation 2.22