Je souhaite développer avec des servlets dans Eclipse, mais il est indiqué que le package javax.servlet
ne peut pas être résolu. Comment puis-je ajouter un javax.servlet
package à mon projet Eclipse?
Je souhaite développer avec des servlets dans Eclipse, mais il est indiqué que le package javax.servlet
ne peut pas être résolu. Comment puis-je ajouter un javax.servlet
package à mon projet Eclipse?
Réponses:
Assurez-vous que vous utilisez au moins Eclipse IDE pour les développeurs Java d' entreprise (avec l' entreprise ). Il contient des outils de développement pour créer des projets Web dynamiques et intégrer facilement des conteneurs de servlets (ces outils font partie de la plateforme d'outils Web, WTP). Dans le cas où vous possédiez déjà Eclipse IDE pour Java (sans Enterprise) et avez installé manuellement certains plugins associés, il est probable que cela n'ait pas été fait correctement. Vous feriez mieux de le jeter et de récupérer le véritable IDE Eclipse pour Enterprise Java.
Vous devez également vous assurer que vous avez déjà un servletcontainer installé sur votre machine qui implémente au moins la même version d'API Servlet que le servletcontainer dans l'environnement de production, par exemple Apache Tomcat , Oracle GlassFish , JBoss AS / WildFly , etc. Habituellement, juste télécharger le fichier ZIP et l'extraire est suffisant. Dans le cas de Tomcat, ne téléchargez pas le format EXE, c'est uniquement pour les environnements de production basés sur Windows. Voir aussi ao Plusieurs ports (8005, 8080, 8009) requis par Tomcat Server 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 du SDK Java EE sur Oracle.com contient essentiellement GlassFish. Donc, 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 qu'un simple conteneur de servlet, ils prennent également en charge JSF, EJB, JPA et toutes les autres fonctionnalités Java EE. Voir aussi ao Qu'est-ce que Java EE exactement?
Après avoir installé Eclipse pour Enterprise Java et un servletcontainer sur votre machine, procédez comme suit dans Eclipse:
Intégrer le servletcontainer dans Eclipse
une. Vue via les serveurs
Ouvrez la vue Serveurs dans la zone inférieure.
Faites un clic droit là-bas et choisissez Nouveau> Serveur .
Choisissez la marque et la version de conteneur de servlet appropriées et parcourez l'assistant.
b. Ou, via les préférences Eclipse
Serveur associé au projet
une. Dans un nouveau projet
Ouvrez le Navigateur / Explorateur de projet sur le côté gauche.
Faites un clic droit là-bas et choisissez Nouveau> Projet puis dans le menu Web> Projet Web dynamique .
Dans l'assistant, définissez le runtime cible sur le serveur intégré.
b. Ou, dans un projet existant
Cliquez avec le bouton droit sur le projet et choisissez Propriétés .
Dans la section Targeted Runtimes , sélectionnez le serveur intégré.
Dans les deux cas, Eclipse prendra automatiquement les bibliothèques du servletcontainer dans le chemin de génération. De cette façon, vous pourrez importer et utiliser l'API Servlet.
Vous ne devriez en aucun cas avoir besoin de tripoter la propriété Build Path du projet. Vous devez avant tout jamais copier manuellement / télécharger / déplacer / inclure les bibliothèques individuelles spécifiques au servletcontainer aiment servlet-api.jar
, jsp-api.jar
, el-api.jar
, j2ee.jar
,javaee.jar
, etc. Il ne ferait que conduire à la portabilité future, la compatibilité, les troubles classpath et de maintenabilité, parce que votre webapp ne fonctionnerait pas quand il est déployée sur un servletcontainer d'une marque / version différente de celle d'où ces bibliothèques sont originellement obtenues.
Dans le cas où vous utilisez Maven, vous devez vous assurer absolument que les bibliothèques spécifiques au servletcontainer qui sont déjà fournies par le runtime cible sont marquées comme <scope>provided</scope>
.
Voici quelques exceptions typiques que vous pouvez obtenir lorsque vous la litière /WEB-INF/lib
ou même /JRE/lib
, /JRE/lib/ext
, etc avec des bibliothèques spécifiques de servletcontainer dans une tentative de négligence de corriger les erreurs de compilation:
<property name="tomcat.home" value="D:\\Program Files\\Apache Software Foundation\\apache-tomcat-6.0.36"/>
etc
maven-archetype-webapp
pas le JAR servlet-api comme dépendance? Le projet a un index.jsp avec une erreur de compilation. (Eclipse Luna Build id: 20140612-0600, JDK 8, M2eclipse)
servlet-api
dépendances @arun sont fournies par les environnements d'exécution Servlet comme Tomcat, Wildfly, Glassfish, etc.,. Ne l'incluez jamais dans votre application, car il est possible qu'elle entre en conflit avec celle de l'environnement.
Accédez aux propriétés de votre projet (avec Alt+ Enterou clic droit)
vérifiez Apache Tomcat v7.0 sous Targeted Runtime et cela fonctionne.
The import javax.servlet cannot be resolved
.
Petite différence avec Hari:
Cliquez avec le bouton droit sur le projet ---> Propriétés ---> Chemin de génération Java ---> Ajouter une bibliothèque ... ---> Runtime du serveur ---> Apache Tomcat ----> Terminer.
Incluez servlet-api.jar à partir du dossier lib de votre serveur.
Faites cette étape
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>
Solution rapide - Cela a fonctionné dans Eclipse - Cliquez avec le bouton droit sur le projet -> Propriétés -> Chemin de génération Java (onglet) -> Ajouter des fichiers JAR externes -> recherchez l'implémentation du pot api du servlet (si Tomcat - son nom servlet-api.jar) -> cliquez sur OK. C'est tout !!
servlet-api.jar
, jsp-api.jar
, el-api.ja
r, j2ee.jar
, javaee.jar
, etc. Il ne ferait que conduire à la portabilité future, la compatibilité, classpath et les troubles de maintenabilité.
vous pouvez simplement copier les servlet-api.jar
fichiers jar et les copier 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 suivant les étapes suivantes.
servlet-api.jar
fichier.servlet-api.jar
, jsp-api.jar
, javaee.jar
, etc. Il ne ferait que conduire à la portabilité future, compatibilité, problèmes classpath et maintenabilité.
Je sais que c'est un ancien poste. Cependant, j'ai observé une autre instance où Tomcat a déjà ajouté dans le projet, mais nous obtenons toujours cette erreur. Voici ce que cela a permis de résoudre:
Alt + Entrer
les 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 TERMINÉ!
J'espère que cela aide quelqu'un.
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>");
}
}
Bien sûr, cela ne fonctionne que si vous avez ajouté le servlet-api.jar
chemin de génération à Eclipse. Généralement, votre serveur d'applications (par exemple Tomcat ) aura le bon fichier jar.
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>
Pour les projets Gradle:
dependencies {
providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1'
}
ou téléchargez javax.servlet.jar
et ajoutez à votre projet.
J'obtenais une exception de pointeur nul lors de la création du projet lié au "Module Web dynamique".
Pour obtenir le projet à compiler (c'est-à-dire javax.servlet
à importer avec succès), je devais aller dans les propriétés du projet , choisir Project Facets dans la barre latérale, cocher Dynamic Web Module et cliquer sur Appliquer .
Étonnamment, cette fois, la facette "Dynamic Web Module" s'est installée correctement et l'importation a commencé à fonctionner.
Dans mon cas, quand je suis allé au Targetted Runtimes écran , 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.
Beaucoup d'entre nous se développent dans Eclipse via un projet Maven. Si c'est le cas, vous pouvez inclure les dépendances Tomcat dans Maven via les jars tomcat-servlet-api
et tomcat-jsp-api
. Un existe pour chaque version de Tomcat. Habituellement, les ajouter avec une portée provided
à votre POM est suffisant. Cela gardera votre build plus portable.
Si vous mettez à niveau Tomcat à l'avenir, il vous suffit également de mettre à jour la version de ces pots.
Vous ne devez surtout jamais copier / télécharger / déplacer / inclure manuellement les bibliothèques spécifiques à chaque servletcontainer comme servlet-api.jar
@BalusC,
Je préférerais utiliser les classes exactes que mon application va utiliser plutôt que celles fournies par Eclipse (quand je me sens comme un développeur paranoïaque).
Une autre solution consisterait à utiliser Eclipse "Configurer le chemin de génération"> Bibliothèques> Ajouter des fichiers JAR externes et à ajouter l'api de servlet du conteneur que l'on choisit d'utiliser.
Et suivez la solution de @kaustav datta lorsque vous utilisez ant pour construire - ayez 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?
Cela pourrait également être la raison. je suis venu avec suivre 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 <exclusions>...</exclusions>
dépendance, cela résoudra le problème, mais assurez-vous que 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>