Maillot arrêté de travailler avec InjectionManagerFactory pas trouvé
Je suis la réception d'erreur ci-dessous lors de l'exécution de mon Maillot de l'API dans Tomcat 8.5.11 qui est à l'origine de mon API pour arrêter:
D'État HTTP 500 - Servlet.init() de la servlet Maillot de Service REST jeté
exceptiontype de rapport d'Exception
message Servlet.init() de la servlet Maillot de Service REST jeté exception
description Le serveur a rencontré une erreur interne qui l'a empêché
de répondre à cette demande.exception
javax.servlet.ServletException: Servlet.init() de la servlet Maillot de REPOS
Service a généré une exception
org.apache.catalina.authentificateur.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
org.apache.catalina.les vannes.ErrorReportValve.invoke(ErrorReportValve.java:79)
org.apache.catalina.les vannes.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
org.apache.catalina.connecteur.CoyoteAdapter.service(CoyoteAdapter.java:349)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
org.apache.coyote.AbstractProcessorLight.processus(AbstractProcessorLight.java:66)
org.apache.coyote.AbstractProtocol$ConnectionHandler.processus(AbstractProtocol.java:798)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1434)
org.apache.tomcat.util.net.SocketProcessorBase.exécuter(SocketProcessorBase.java:49)
java.util.de façon concomitante.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.de façon concomitante.ThreadPoolExecutor$Travailleur.exécuter(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.les threads.TaskThread$WrappingRunnable.exécuter(TaskThread.java:61)
java.lang.Fil de discussion.exécution(Thread.java:745)cause
java.lang.IllegalStateException: InjectionManagerFactory pas trouvé.
org.glassfish.jersey.interne.injecter.Les Injections.lookupInjectionManagerFactory(Injections.java:97)
org.glassfish.jersey.interne.injecter.Les Injections.createInjectionManager(Injections.java:89)
org.glassfish.jersey.serveur.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.authentificateur.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
org.apache.catalina.les vannes.ErrorReportValve.invoke(ErrorReportValve.java:79)
org.apache.catalina.les vannes.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
org.apache.catalina.connecteur.CoyoteAdapter.service(CoyoteAdapter.java:349)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
org.apache.coyote.AbstractProcessorLight.processus(AbstractProcessorLight.java:66)
org.apache.coyote.AbstractProtocol$ConnectionHandler.processus(AbstractProtocol.java:798)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1434)
org.apache.tomcat.util.net.SocketProcessorBase.exécuter(SocketProcessorBase.java:49)
java.util.de façon concomitante.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.de façon concomitante.ThreadPoolExecutor$Travailleur.exécuter(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.les threads.TaskThread$WrappingRunnable.exécuter(TaskThread.java:61)
java.lang.Fil de discussion.exécution(Thread.java:745)
L'application est à construire avec les dépendances suivantes avec 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.+"
) }
Ce téléchargements jersey-common-2.26-b04.jar
qui contient la classe manquants sous /org/glassfish/jersey/internal/inject/InjectionManagerFactory
. Le fichier jar est déployé dans le dossier Tomcat sous WEB-INF/lib
Quel est le problème ici? Le gradle script a travaillé depuis quelques mois avec la même version de Tomcat.
- je vois il y a une nouvelle version de jersey sur 19/05 - vérifier si c'est le problème, j'ai le même problème actuellement
- search.maven.org/...
- Ce tutoriel m'a aidé à résoudre ce problème crunchify.com/...
Vous devez vous connecter pour publier un commentaire.
Ajouter cette dépendance:
cf. https://stackoverflow.com/a/44536542/1070215
Jersey 2.26 et les nouveaux ne sont pas compatibles avec les anciennes versions. La raison derrière ce qui a été mentionné dans le notes de version:
Que pour l'instant on devrait utiliser les dépendances suivantes:
Maven
Gradle
Voici la raison. À partir de Jersey 2.26, Maillot retiré HK2 comme un dur de dépendance. Il a créé un SPI comme une façade pour l'injection de dépendance fournisseur, dans la forme de la
InjectionManager
etInjectionManagerFactory
. Donc pour le Jersey à terme, nous avons besoin de la mise en œuvre de laInjectionManagerFactory
. Il existe deux implémentations de cette, qui sont pour HK2 et CDI. Le HK2 dépendance est lajersey-hk2
d'autres sont en train de parler.Le CDI dépendance est
Ce (jersey-cdi2-se) doit être utilisé uniquement pour SE environnements et pas EE environnements.
Jersey fait ce changement pour permettre aux autres de donner leur propre infrastructure d'injection de dépendance. Ils n'ont pas de plans de mise en œuvre de toute autre
InjectionManager
s, si d'autres ont fait les tentatives de mise en œuvre de l'un de Guice.Choisir les DI à injecter des trucs en Jersey:
Printemps 4:
Printemps 3:
HK2:
jersey-spring
intégration utilise toujours un HK2 pont sous le capot pour le faire fonctionner.La seule façon que je pouvais le résoudre par:
org.glassfish.jersey.de base
jersey-serveur
${jersey-2-version}
Si, seulement si j'ai ajouté
jersey-container-servlet
etjersey-hk2
serait-il fonctionner sans erreursAussi loin que je peux voir les dépendances ont changé entre 2.26-b03 et 2.26-b04 (HK2 a été déplacé à partir de la compilation de testCompile)... il pourrait y avoir quelques changements dans le maillot de dépendances qui n'a pas encore été terminé (ou qui conduisent à un bug).
Cependant, pour l'instant la solution la plus simple est de s'en tenir à une version plus ancienne 🙂
Voici la nouvelle dépendance (août 2017)