web-dev-qa-db-fra.com

Jersey Java.lang.ClassNotFoundException: com.Sun.jersey.spi.container.servlet.ServletContainer

J'essaie de créer un service Web avec Tomcat et Eclipse à l'aide de la bibliothèque de jersey. Ceci est ma classe de service: 

package com.gontuseries.university;

import javax.ws.rs.core.MediaType;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;


@Path("/university")
public class UniversityRestWs {

    @GET
    @Produces(MediaType.TEXT_HTML)
    public String getHtmlUniversityInfo(){
        return "<html><body>test</body></html>";
    }

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getTextUniversityInfo(){
        return "test";
    }
}

Et c'est le fichier web.xml 

 <servlet>
 <servlet-name>Jersey REST Service</servlet-name>
 <servlet-class>com.Sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
 <init-param>
 <param-name>com.Sun.jersey.config.property.packages</param-name>
 <param-value>com.gontuseries.university</param-value>
 </init-param>
 </servlet>
 <servlet-mapping>
 <servlet-name>Jersey REST Service</servlet-name>
 <url-pattern>/rest/*</url-pattern>
 </servlet-mapping>

Quand je teste mon service, je reçois Java.lang.ClassNotFoundException: com.Sun.jersey.spi.container.servlet.ServletContainer J'ai téléchargé le maillot de https://jersey.Java.net/download.html

Quelqu'un peut-il m'aider? Merci

7
user2607498

Pour moi, le problème était que le serveur ne contenait aucun fichier jar dans le dossier lib. Assurez-vous qu'il a accès à toutes les dépendances dans: Projet -> propriétés -> développement Assembly -> add -> Java construire des entrées de chemin.

12
Eran

J'avais le même problème. Nous avons juste besoin d'utiliser le chemin de compilation fourni à Eclipse. Ça marcherait.

Assurez-vous qu’il a accès à toutes les dépendances dans: projet -> propriétés -> développement Assembly -> add -> entrées de chemin de construction Java -> dépendance maven

Je viens d'utiliser une dépendance de lot de maillots

"dépendance

        <groupId>com.Sun.jersey</groupId>
        <artifactId>jersey-servlet</artifactId>
        <version>1.17</version>

dépendance"

Si vous utilisez maven, les meilleures étapes simples fonctionneront avec votre application.

9
Swarit Agarwal

Mec, j'ai eu le même problème. Je résous l'identifiant en ajoutant le jersey-servlet-1.18.jar au fichier WEB-INF/lib. Ensuite, ce dossier a vu comme ceci:

.
Rappelez-vous, ajoutez tous ces pots à votre chemin de construction

7
Natan Lotério

Utilisez-vous Jersey 2.x? Si tel est le cas, la classe ServletContainer a été déplacée vers un autre package. Cet article contient des informations utiles sur la modification du fichier web.xml lors de la migration de Jersey 1.7 à 2.x: https://Java.net/projects/jersey/lists/users/archive/2013 -06/message/91 .

6
bickster

La classe com.Sun.jersey.spi.container.servlet.ServletContainer est contenue dans "jersey-servlet.jar", vous devez donc la placer dans WEB-INF/lib avec "jersey-server.jar".

4
Ján Halaša

J'ai eu la même erreur - "Java.lang.ClassNotFoundException: com.Sun.jersey.spi.container.servlet.ServletContainer" lors de l'exécution du service Web de jersey reposant dans Tomcat à partir d'Eclipse. 

Les étapes suivantes m'ont aidé à résoudre le problème:

  • Corrigez la dépendance maven à la version droite des fichiers jar dépendants

         <dependency>
         <groupId>com.Sun.jersey</groupId>
         <artifactId>jersey-server</artifactId>
         <version>1.19</version>
         </dependency>
         <dependency>
         <groupId>com.Sun.jersey</groupId>
         <artifactId>jersey-servlet</artifactId>
         <version>1.19</version>
         </dependency>
    
  • Faites un clic droit sur le projet Eclipse -> Maven -> Update Project

  • Assurez-vous que le développement des propriétés Eclipse est correctement configuré. Faites un clic droit sur le projet - Propriétés -> Assemblée de développement -> Ajouter -> Entrées du chemin de génération Java -> Dépendance maven

1
Indu

Si vous utilisez la version Zip de JERSEY-jaxrs-ri-2.9, utilisez les informations ci-dessous dans le fichier WEB.XML.

<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
  <param-name>jersey.config.server.provider.packages</param-name>
   ......
</init-param>
0
raj

Je recevais cette erreur dans un projet Eclipse qui fonctionnait auparavant, fonctionnant bien sur Tomcat 7.0. Finalement, je l'ai résolu en supprimant le projet de Tomcat et en le rajoutant.

0
ygesher

Les solutions fournies ci-dessus sont correctes, mais même après avoir apporté ces modifications, j’obtenais cette erreur. Donc, ce que j'ai fait a été supprimé de tous les jarres Jersey téléchargés par maven et de mettre à jour Project à nouveau avec une nouvelle dépendance maven, ce qui a résolu mon problème. 

0
Rogger296