web-dev-qa-db-fra.com

Comment importer l'API javax.servlet dans mon projet Eclipse?

Je souhaite développer avec les servlets dans Eclipse, mais il est indiqué que le package javax.servlet ne peut pas être résolu. Comment puis-je ajouter le package javax.servlet à mon projet Eclipse?

303
tom

Assurez-vous d'avoir le bon Eclipse et le bon serveur

Assurez-vous que vous utilisez au moins Eclipse IDE pour les développeurs Java EE (avec le EE). Il contient des outils de développement permettant de créer des projets Web dynamiques et d’intégrer facilement des conteneurs de servlets (ces outils font partie de Web Tools Platform, WTP). Si vous avez déjà eu Eclipse IDE pour Java (sans EE) et installé manuellement des plug-ins liés à EE, il y a de fortes chances que cela ne se soit pas fait correctement. Vous feriez mieux de le supprimer et de récupérer le véritable Eclipse IDE pour Java EE.

Vous devez également vous assurer qu'un servletcontainer est déjà installé sur votre ordinateur et qu'il implémente au moins la même version de l'API Servlet que le servletcontainer dans l'environnement de production, par exemple Apache Tomcat , Oracle GlassFish , JBoss AS / WildFly , etc. Habituellement, il suffit de télécharger le fichier Zip et de l'extraire. Dans le cas de Tomcat, effectuez not , téléchargez le format EXE, uniquement pour les environnements de production basés sur Windows. Voir aussi a.o. Plusieurs ports (8005, 8080, 8009) requis par le serveur Tomcat sur localhost sont déjà utilisés .

Un servletcontainer est une implémentation concrète de l'API Servlet. Notez que le téléchargement Java EE SDK sur Oracle.com contient essentiellement GlassFish. Ainsi, si vous avez déjà téléchargé le SDK Java EE, vous disposez déjà de GlassFish. Notez également que, par exemple, GlassFish et JBoss AS/WildFly sont plus = juste un servletcontainer, ils prennent également en charge JSF, EJB, JPA et toutes les autres fonctionnalités de Java EE. Voir aussi a.o. Qu'est-ce que Java EE?


Intégrer le serveur dans Eclipse et l'associer à Project

Une fois que vous avez installé Eclipse pour Java EE et un servletcontainer sur votre ordinateur, procédez comme suit dans Eclipse:

  1. Intégrer servletcontainer dans Eclipse

    une. Via la vue Serveurs

    • Ouvrez la vue Servers dans la zone inférieure.
    • Faites un clic droit dessus et choisissez New> Server .
    • Choisissez la marque et la version de servletcontainer appropriées et suivez l'assistant.

      enter image description here

    b. Ou, via les préférences Eclipse

    • Ouvrez Fenêtre> Préférences> Serveur> Environnements d'exécution .
    • Vous pouvez Add , Edit et Remove serveurs ici.

      enter image description here

  2. Associer un serveur à un projet

    une. Dans un nouveau projet

    • Ouvrez le Project Navigator/Explorer sur le côté gauche.
    • Faites un clic droit dessus et choisissez Nouveau> Projet puis dans le menu Web> Projet Web dynamique .
    • Dans l'assistant, définissez le Target Runtime sur le serveur intégré.

      enter image description here

    b. Ou, dans le projet existant

    • Cliquez avec le bouton droit sur le projet et choisissez Properties .
    • Dans la section Runtimes ciblés , sélectionnez le serveur intégré.

      enter image description here

    Quoi qu'il en soit, Eclipse prendra alors automatiquement les bibliothèques de servletcontainer dans le chemin de construction. De cette façon, vous pourrez importer et utiliser l'API Servlet.


Ne transportez jamais de fichiers JAR spécifiques au serveur.

Dans tous les cas, vous ne devriez pas avoir besoin de bidouiller dans la propriété Build Path du projet. Vous devez avant tout ne jamais copier/télécharger/déplacer/inclure manuellement les bibliothèques spécifiques à un servletcontainer telles que servlet-api.jar, jsp-api.jar, el-api.jar, j2ee.jar, javaee.jar, etc. Cela ne conduirait qu'à de futurs problèmes de portabilité, de compatibilité, de chemin de classe et de maintenabilité, car votre application Web ne fonctionnerait pas lorsqu'elle serait déployée dans un conteneur de servlet d'une marque/version différente de celle à laquelle ces bibliothèques ont été obtenues.

Si vous utilisez Maven, vous devez absolument vous assurer que les bibliothèques spécifiques à servletcontainer déjà fournies par le runtime cible sont marquées avec le code <scope>provided</scope>.

Voici quelques exceptions typiques que vous pouvez obtenir lorsque vous écrivez le /WEB-INF/lib ou même le /JRE/lib, le /JRE/lib/ext, etc. avec les bibliothèques spécifiques à servletcontainer lors d'une tentative négligente de corriger les erreurs de compilation:

399
BalusC

Petite différence avec Hari:

Faites un clic droit sur le projet ---> Propriétés ---> Chemin de construction Java ---> Ajouter une bibliothèque ... ---> Exécution serveur ---> Apache Tomcat ----> Terminer.

77
ivanLam

Incluez servlet-api.jar à partir du dossier lib du serveur.enter image description here

Faites cette étape

enter image description here

13
sarath

Solution rapide - Cela fonctionnait dans Eclipse - Clic droit sur le projet -> Propriétés -> Chemin de construction Java (onglet) -> Ajouter des fichiers JAR externes -> localisez l'implémentation de l'API jar du servlet (si Tomcat - son nommé servlet-api.jar) -> cliquez sur OK. C'est tout !!

12
Hari Gudigundla

Ajoutez la dépendance javax.servlet dans pom.xml. Votre problème sera résolu.

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>
11
Zeeshan Akhter

Je sais que c'est un ancien post. Cependant, j'ai observé un autre cas où Tomcat avait déjà été ajouté dans le projet, mais nous obtenons toujours cette erreur. Est-ce que ceci a résolu ceci:
Alt + Entrée
Facettes du projet
À droite, à côté des détails, se trouve un autre onglet "Runtimes". Le serveur Tomcat installé y sera répertorié. Sélectionnez le.
Enregistrez la configuration et DONE!

J'espère que ça aide quelqu'un.

5
KNP

vous pouvez simplement copier le servlet-api.jar et copier ces fichiers jar dans le dossier lib, qui se trouve dans WEB-INF. puis nettoyez et construisez votre projet, vos erreurs seront résolues.

  **OR**

vous pouvez directement ajouter des fichiers JAR à la bibliothèque en procédant comme suit.

  1. Faites un clic droit sur le projet.
  2. Aller aux propriétés.
  3. Accédez au chemin de génération Java.
  4. Sélectionnez l'option Ajouter une bibliothèque dans les onglets.
  5. Ajouter des fichiers Jar
  6. donne le chemin de votre fichier servlet-api.jar.
  7. Nettoyez et construisez votre projet.
5
Mitul Maheshwari

De wikipedia .

import Java.io.IOException;
import Java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloWorld extends HttpServlet {
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
                "Transitional//EN\">\n" +
                "<html>\n" +
                "<head><title>Hello WWW</title></head>\n" +
                "<body>\n" +
                "<h1>Hello WWW</h1>\n" +
                "</body></html>");
  }
}

Ceci, bien sûr, ne fonctionne que si vous avez ajouté le servlet-api.jar au chemin de compilation Eclipse. Généralement, votre serveur d’application (par exemple Tomcat ) aura le bon fichier jar.

3
Juha Syrjälä

Pour les projets maven, ajoutez la dépendance suivante:

<!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>

référence

Pour les projets de graduation:

dependencies {
providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1'
}

ou téléchargez javax.servlet.jar et ajoutez-le à votre projet.

3

Nous sommes nombreux à nous développer dans Eclipse via un projet Maven. Si tel est le cas, vous pouvez inclure des dépendances Tomcat dans Maven via les fichiers jar Tomcat-servlet-api et Tomcat-jsp-api. Il en existe une pour chaque version de Tomcat. Généralement, l'ajout de ceux-ci avec la portée provided à votre POM suffit. Cela gardera votre construction plus portable.

Si vous mettez à jour Tomcat à l'avenir, il vous suffira également de mettre à jour la version de ces fichiers jar.

2
Erica Kane

Dans mon cas, lorsque je suis allé à l'écran Targetted Runtimes, Tomcat 7 n'était pas répertorié (désactivé) malgré son installation.

Pour résoudre ce problème, je devais aller dans Préférences-> Serveur-> Environnements d'exécution puis désinstaller et réinstaller Tomcat 7.

2
Paul LeBeau

Je recevais une exception de pointeur null lors de la création du projet lié au "module Web dynamique".

Pour que le projet soit compilé (c’est-à-dire que javax.servlet soit importé avec succès), je devais accéder aux propriétés du projet , choisissez Facettes du projet dans la barre latérale, cochez Module Web dynamique et cliquez sur Appliquer .

Étonnamment, cette fois, la facette "Module Web dynamique" est installée correctement et l'importation commence à fonctionner.

2
Ivan Vučica

Surtout, vous ne devriez jamais jamais copier/télécharger/déplacer/inclure manuellement les bibliothèques spécifiques à servletcontainer telles que servlet-api.jar.

@BalusC,

Je préférerais utiliser les classes exactes utilisées par mon application plutôt que celles fournies par Eclipse (lorsque je me sens comme un développeur paranoïaque).

Une autre solution consisterait à utiliser Eclipse "Configurer le chemin de construction"> Bibliothèques> Ajouter des fichiers JAR externes et à ajouter une API de servlet, quel que soit le conteneur choisi.

Et suivez la solution de @kaustav datta lorsque vous utilisez ant pour construire - possédez une propriété comme Tomcat.home ou weblogic.home. Cependant, cela introduit une autre contrainte que le développeur doit installer Weblogic sur sa machine locale si weblogic est utilisé! Une autre solution plus propre?

0
RuntimeException

Cela pourrait être aussi la raison. Je suis venu avec après pom.xml.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-Tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

Le problème non résolu était dû à l'exclusion de spring-boot-starter-Tomcat. Supprimez simplement la dépendance <exclusions>...</exclusions>, le problème sera résolu, mais assurez-vous cela exclura également le serveur Tomcat intégré.

Si vous avez également besoin d'un serveur Tomcat intégré, vous pouvez ajouter la même dépendance avec compile scope.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-Tomcat</artifactId>
    <scope>compile</scope>
</dependency>
0
Muhammad Usman