NoClassDefFoundError ProcessingException lors de la migration de jersey 1.x en jersey, 2.x ( 2.8 )
J'ai développé une application de service web qui fonctionne très bien avec jersey 1.x ( 1.16 )
Récemment, j'ai essayé de migrer vers la dernière version stable de jersey de la version 2.8
J'ai supprimé tous les maillot de fichiers jar de v1.16
ensuite, j'ai téléchargé jersey pots de v2.8 à partir du lien - https://jersey.java.net/download.html
Selon la documentation, j'ai appris que je devrais avoir le dernier servlet jar, servlet pot de 2,5 ou au-dessus, j'ai Donc téléchargé servlet-api-2.5.jar et ajouté la même pour /dossier libs.
J'ai téléchargé javax.ws.rs-api-2.0-m09.jar et de l'ajouter à /libs
J'ai également ajouté plus tard larguer v 1.3.3 /libs
Mais je suis une exception, quand je lance sur tomcat7 comme suit
Quelles sont les étapes exactes à suivre pour migrer à partir de jersey 1.x à 2.x ? Ce qui manque ici ?
Mon Web.xml se présente comme suit
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>com.tempWSJersey2.WebServices</display-name>
<servlet>
<servlet-name>Temp REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.temp</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Temp REST Service</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
Et l'exception est -
SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/tempWSJersey2]]
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
at java.util.concurrent.FutureTask.get(FutureTask.java:111)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/tempWSJersey2]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
... 7 more
Caused by: java.lang.NoClassDefFoundError: javax/ws/rs/ProcessingException
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2904)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2308)
at java.lang.Class.getDeclaredFields(Class.java:1760)
at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:87)
at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:261)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:140)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:67)
at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:405)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:881)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:369)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5173)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 7 more
Caused by: java.lang.ClassNotFoundException: javax.ws.rs.ProcessingException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
... 28 more
May 11, 2014 8:49:41 AM org.apache.catalina.core.ContainerBase startInternal
SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
at java.util.concurrent.FutureTask.get(FutureTask.java:111)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.startup.Catalina.start(Catalina.java:684)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:451)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 7 more
May 11, 2014 8:49:41 AM org.apache.catalina.startup.Catalina start
SEVERE: Catalina.start:
org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.startup.Catalina.start(Catalina.java:684)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:451)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 7 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 9 more
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 11 more
May 11, 2014 8:49:41 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 1452 ms
Si je comprend la configuration de la classe, par l'extension ResourceConfig classe
Je reçois étrange erreur comme suit.
Multiple markers at this line
- The type javax.ws.rs.core.Configurable cannot be resolved. It is indirectly referenced
from required .class files
- The hierarchy of the type AppConfiguration is inconsistent
Mise à jour de la Solution au problème
1> Ajouter tous les fichiers jar donné jaxrs-ri dossier qui vous à télécharger maillot de 2,8 à partir du lien
https://jersey.java.net/download.html
Ajouter des fichiers jar à partir de tous les dossiers , "lib", "ext", "api"
2> Ajouter le jar fichiers répertoriés dans le post ci-dessous
Ne pouvez pas activer les POJO en fonction JSON en charge de la liaison pour Jackson en Jersey 2.0
Maintenant jersey 2.8 fonctionne parfaitement ..
Salut, j'ai appliqué le correctif, mais plus tard il a quelques exception. Puis je suis venu pour savoir que je dois inclure tous les pots qui viennent avec jersey cadre. quand on télécharge il contient trois dossiers Lib ext, api, je me dois d'ajouter des bocaux de tous ces dossiers. J'ai été en mesure de résoudre tous,mais quand je lance un simple service d'accueil, qui est une méthode GET et renvoie la réponse JSON {"Status":"Bienvenue"} , Il s'est écrasé et a jeté une exception org.glassfish.jersey.message.interne.MessageBodyProviderNotFoundException: MessageBodyWriter pas trouvé le type de support=application/json, type=classe Aucune Idée sur la même ?
Voir la mise à jour de réponse. Vous avez besoin d'ajouter "org.codehaus.jackson.jaxrs" sont fournis si vous êtes à l'aide de jackson pour json etc. Si vous utilisez autre chose que jackson vous pouvez avoir à ajouter d'autres comme approprié pour ce pot. Je pense que cela va résoudre votre problème.
A ma dernière mise à jour de répondre à vous aider?
Pas de vkg, Il n'a pas aider., Au lieu de cela, je fixe l'exception, en se référant à certains autres stackoverflow post. Selon le post, j'ai copier tous les fichiers jar de le téléchargé jaxrs-ri dossier. Il dispose de trois dossiers à l'intérieur, "lib", "ext" et "api" , je copie tous les fichiers jar à partir de ces trois dossiers à ma demande de dossier lib. Puis Il fixe toutes les questions
OriginalL'auteur Sadanand | 2014-05-11
Vous devez vous connecter pour publier un commentaire.
Exception que vous obtenez qui se passe parce que vous avez téléchargé "javax.ws.rs-api-2.0-m09.jar" ce pot n'a pas ProcessingException télécharger la dernière
Télécharger ce pot javax.ws.rs-api-2.0.jar
Deuxièmement, je pense que vous êtes absent une partie de votre web.xml
Essayez d'ajouter ces choses à votre web.xml comme appropriée pour votre application. Si vous n'avez pas cette section, ce qui peut aussi conduire à SÉVÈRE: UN conteneur enfant a échoué pendant le démarrage....
C'est ce qui vous manque. Veuillez noter que les param-value est la liste des paquets qui contiennent vos services rest.
Pour obtenir la dernière Jackson utiliser cette Lien
OriginalL'auteur vkg
Si vous travaillez dans eclipse. Il suffit de retirer les bibliothèques de Déploiement de l'Assemblée et les ajouter à nouveau. Parfois, après l'ajout de nouveau pot n'a pas de mise à jour de la bibliothèque de l'application web
BuildPath->Déploiement de l'Assemblée
OriginalL'auteur biswarup bannerjee