Я получаю приведенную ниже ошибку при запуске моего API-интерфейса Jersey в Tomcat 8.5.11, из-за которого мой API останавливается:
HTTP Status 500 - Servlet.init () для сервлета Джерси. Служба REST вызвала исключение.
тип отчета об исключении
сообщение Servlet.init () для сервлета Джерси Служба REST вызвала исключение
description Сервер обнаружил внутреннюю ошибку, которая не позволила ему выполнить этот запрос.
исключение
javax.servlet.ServletException: Servlet.init () для сервлета Джерси Служба REST вызвала исключение org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:474) org.apache.catalina.valves.ErrorReportValve.ReportValve.inport Java: 79) org.apache.catalina.valves.AbstractAccessLogValve.invoke (AbstractAccessLogValve.java:624) org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:349) org.apache.cocessorHp служба (Http11Processor.java:783) org.apache.coyote.AbstractProcessorLight.process (AbstractProcessorLight.java:66) org.apache.coyote.AbstractProtocol $ ConnectionHandler.process (AbstractProtocol.java:798) org.apache.tomcat.util. net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java:1434) org.apache.tomcat.util.net.SocketProcessorBase.Выполните (SocketProcessorBase.java:49) java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:6til.catg.org) или threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) java.lang.Thread.run (Thread.java:745)
основная причина
java.lang.IllegalStateException: InjectionManagerFactory не найден. org.glassfish.jersey.internal.inject.Injection.lookupInjectionManagerFactory (Injection.java:97) org.glassfish.jersey.internal.inject.Injection.createInjectionManager (Injection.java:89) org.glassfish.jersey.server.ApplicationHandler. (ApplicationHandler.java:282) org.glassfish.jersey.servlet.WebComponent. (WebComponent.java:335) org.glassfish.jersey.servlet.ServletContainer.init (ServletContainer.java:178) org.glassfish.jersey.servlet. ServletContainer.init (ServletContainer.java:370) javax.servlet.GenericServlet.init (GenericServlet.java:158) org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.jalap.cat. Org. ErrorReportValve.invoke (ErrorReportValve.java:79) org.apache.catalina.valves.
Приложение построено со следующими зависимостями с Gradle:
dependencies {
compile (
// REST
"org.glassfish.jersey.containers:jersey-container-servlet:2.+",
"javax.servlet:javax.servlet-api:4.+",
// REST Token
"org.bitbucket.b_c:jose4j:0.+",
// MongoDB
"org.hibernate.ogm:hibernate-ogm-bom:5.+",
"org.hibernate.ogm:hibernate-ogm-infinispan:5.+",
"org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.+",
"org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.+",
"org.jboss.narayana.jta:narayana-jta:5.+",
"org.jboss:jboss-transaction-spi:7.+",
"log4j:log4j:1.+",
"org.hibernate.ogm:hibernate-ogm-mongodb:5.+",
"org.bouncycastle:bcprov-jdk15on:1.+"
) }
Эта загрузка, jersey-common-2.26-b04.jar
которая содержит отсутствующий класс в /org/glassfish/jersey/internal/inject/InjectionManagerFactory
. Файл JAR развертывается в папке Tomcat вWEB-INF/lib
Что здесь может быть не так? Сценарий gradle работал последние несколько месяцев с той же версией Tomcat.