web-dev-qa-db-fra.com

Impossible d'exécuter une application Web sur Eclipse

Lorsque j'exécute mon projet WebApp à partir d'Eclipse, il s'exécute correctement. Mais si par erreur arrêter le serveur, je le tue dans la vue "Console" au lieu de "Arrêter" le serveur à partir de la vue "Serveurs" .

Java.lang.NullPointerException
at org.Eclipse.wst.common.componentcore.internal.util.VirtualReferenceUtilities.getDefaultProjectArchiveName(VirtualReferenceUtilities.Java:81)
at org.Eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getJavaClasspathReferences(J2EEModuleVirtualComponent.Java:332)
at org.Eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getNonManifestRefs(J2EEModuleVirtualComponent.Java:236)
at org.Eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getReferences(J2EEModuleVirtualComponent.Java:160)
at org.Eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getReferences(J2EEModuleVirtualComponent.Java:208)
at org.Eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getReferences(J2EEModuleVirtualComponent.Java:201)
at org.Eclipse.jst.common.internal.modulecore.SingleRootUtil.hasConsumableReferences(SingleRootUtil.Java:217)
at org.Eclipse.jst.common.internal.modulecore.SingleRootUtil.validateSingleRoot(SingleRootUtil.Java:165)
at org.Eclipse.jst.common.internal.modulecore.SingleRootUtil.isSingleRoot(SingleRootUtil.Java:93)
at org.Eclipse.jst.common.internal.modulecore.SingleRootExportParticipant.canOptimize(SingleRootExportParticipant.Java:84)
at org.Eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.canOptimize(FlatVirtualComponent.Java:136)
at org.Eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.cacheResources(FlatVirtualComponent.Java:118)
at org.Eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.fetchResources(FlatVirtualComponent.Java:101)
at org.Eclipse.wst.web.internal.deployables.FlatComponentDeployable.members(FlatComponentDeployable.Java:147)
at org.Eclipse.wst.server.core.internal.ModulePublishInfo.hasDelta(ModulePublishInfo.Java:418)
at org.Eclipse.wst.server.core.internal.ServerPublishInfo.hasDelta(ServerPublishInfo.Java:443)
at org.Eclipse.wst.server.core.internal.Server.hasPublishedResourceDelta(Server.Java:1539)
at org.Eclipse.wst.server.core.internal.Server$ResourceChangeJob$1.visit(Server.Java:214)
at org.Eclipse.wst.server.core.internal.Server.visitModule(Server.Java:2929)
at org.Eclipse.wst.server.core.internal.Server.visit(Server.Java:2913)
at org.Eclipse.wst.server.core.internal.Server$ResourceChangeJob.run(Server.Java:225)
at org.Eclipse.core.internal.jobs.Worker.run(Worker.Java:54)

Et en lançant je reçois ce

SEVERE: Error starting static Resources
Java.lang.IllegalArgumentException: Document base D:\workspace\.metadata\.plugins\org.Eclipse.wst.server.core\tmp0\wtpwebapps\Webapp does not exist or is not a readable directory
    at org.Apache.naming.resources.FileDirContext.setDocBase(FileDirContext.Java:142)
    at org.Apache.catalina.core.StandardContext.resourcesStart(StandardContext.Java:4319)
    at org.Apache.catalina.core.StandardContext.start(StandardContext.Java:4488)
    at org.Apache.catalina.core.ContainerBase.start(ContainerBase.Java:1053)
    at org.Apache.catalina.core.StandardHost.start(StandardHost.Java:840)
    at org.Apache.catalina.core.ContainerBase.start(ContainerBase.Java:1053)
    at org.Apache.catalina.core.StandardEngine.start(StandardEngine.Java:463)

S'il vous plaît aider à récupérer de cela.

27
Ram

J'ai arrêté d'utiliser cette méthode d'exécution de mon application Web . J'utilise plutôt mvn Tomcat:run. Beaucoup plus facile. Bien que je ne sais pas comment déboguer.

0
Ram

J'ai eu du mal à le faire fonctionner, mais grâce à "Alexander Pogrebnyak" (voir déployer un fichier war sur un serveur Tomcat WTP (Eclipse) ), j'ai pu faire fonctionner Eclipse Web Projects avec Maven via m2e:

Avant de commencer, je dois dire que je suis un homme très méfiant. Je commence donc toujours par nettoyer tous mes projets en utilisant le menu "Eclipse> Projet> Nettoyer ..." (sans l'option "Démarrer immédiatement la construction" cochée). Je n'ai pas non plus l'option "Eclipse> Projet> Construire automatiquement" cochée.

Au fait, je suppose que vous aurez déjà installé votre plugin m2e, ou ce que je vais dire n’a aucune signification ...

Eh bien, commençons:

Tout d’abord, au revoir Configuration du serveur:

1) Si vous avez un projet dans une configuration de serveur précédente, supprimez-le (clic droit sur le serveur et sélectionnez l'option "Ajouter et supprimer")

2) Nettoyez le répertoire de travail de votre serveur (cliquez avec le bouton droit de la souris sur le serveur et sélectionnez "Répertoire de travail du serveur Tomcat").

3) Nettoyez les "restes" compilés (clic droit sur le serveur et sélectionnez "Nettoyer")

4) Supprimez la configuration de votre serveur de l'onglet "Serveurs"

5) Supprimez complètement votre projet/dossier "Serveurs" (indiqué dans l'onglet "Explorateur de projet").

6) BONUS: je supprime également l'environnement d'exécution de mon serveur ("Eclipse> Fenêtre> Préférences> Serveur> Environnements d'exécution")

Deuxièmement, "Maven clean" (si votre projet Web a une "nature Maven"): 

1) Faites un clic droit sur votre projet Web

2) "Menu contextuel> Exécuter en tant que> Maven clean"

Cela devrait effacer votre dossier cible

Troisièmement, instalez l'intégration m2e WTP (ouais! Cela ne vient pas comme "par défaut". Une journée entière pour le comprendre):

1) Ouvrez Maven "Discovery" option (Eclipse> Windows> Préférences> Maven> Discovery)

2) Appuyez sur le bouton "Ouvrir le catalogue" (une fenêtre "m2e Marketplace" devrait apparaître)

3) Faites défiler la liste jusqu'à l'option "Intégration WTP", puis "cocher"!

4) Appuyez sur "Terminer"

5) Un "plugin screen like" apparaîtra. "Suivant", "Suivant", "D'accord", bla, bla, bla ...

Quatrièmement, laissez Eclipse que de le réexécuter:

1) Si on ne vous demande pas de restaurer Eclipse (que j'ai du mal à croire que vous ne le ferez pas), redémarrez-le vous-même!

Cinquièmement, la réinsertion sociale:

1) Ajouter la nature Maven au projet (Cliquez avec le bouton droit de la souris sur votre projet Web dans "Menu contextuel> Configurer> Convertir en projet Maven").

2) Mettez à jour votre configuration Maven (oui, oui, méfiant, je sais). Cliquez à nouveau avec le bouton droit sur votre projet Web, maintenant avec un "M" sur son icône ("Menu contextuel> Maven> Mettre à jour le projet").

3) Exécuter une installation Maven (Cliquez avec le bouton droit de la souris sur votre projet Web dans "Menu contextuel> Exécuter en tant que> Installation Maven").

4) Construisez votre projet ("Eclipse> Projet> Construire tout")

Sixièmement, mettez tout cela au travail:

1) Déployer et exécuter votre application Web (Faites un clic droit sur votre projet Web, "Menu contextuel> Exécuter en tant que> Exécuter sur le serveur")

2) Il vous sera demandé de créer une autre configuration de serveur. Le projet/dossier "Serveurs" sera à nouveau créé, mais c'est comme ça.

C'est tout!!! Je dois admettre que, une fois le serveur lancé, cela ne fonctionnait pas, mais cette fois (je ne sais pas pourquoi), les bibliothèques "Log4J" étaient introuvables. Après un "project clean" + "maven clean" et un "maven install" + "project build", un autre message indique que ma classe Servlet est introuvable. Une fois encore, j'ai exécuté un "projet propre" + "maven propre" et un "installation maven" + "projet build" et "le tour est joué" !!! Cela a fonctionné (et c'est pourquoi je suis si méfiant).

Je commençais à être inquiet avec ce nouveau double Juno + m2e ... Je n'ai jamais eu ce genre de problème avec Indigo ou Ganymede ... Mais je suppose que je peux à nouveau faire confiance à Eclipse (puis-je?)

39
Alejo Ceballos

Ne faites pas ces solutions de contournement cosmiques folles !!

Cela fonctionne bien:

Ajoutez à votre fichier ".project" (masqué) ces lignes:

 <natures>
    <nature>org.Eclipse.jem.workbench.JavaEMFNature</nature>
    <nature>org.Eclipse.wst.common.modulecore.ModuleCoreNature</nature>
    <nature>org.Eclipse.jdt.core.javanature</nature>
    <nature>org.Eclipse.m2e.core.maven2Nature</nature>
    <nature>org.Eclipse.wst.common.project.facet.core.nature</nature>
    <nature>org.Eclipse.wst.jsdt.core.jsNature</nature>
  </natures>

Prendre plaisir !

Pourquoi? si vous vérifiez ce répertoire inexistant, eh bien, ce "../.metadata/blah/blah/tmp0/wtpwebapps/YOURPROJECT/" est VIDE: alors votre construction ne crée pas le WAR ... !!! Parce que le plugin maven ne comprend pas ce qu'il doit faire!

J'ai trouvé cela après avoir comparé deux fichiers .project provenant de projets de déploiement/déploiement différents ...

L'espoir a aidé!

7
user1995400

J'ai exactement le même problème et la même exception, mais j'ai résolu le problème simplement en spécifiant le type de package de POM à war comme "war", en faisant un clic droit sur le projet et en sélectionnant "Maven> Mettre à jour la configuration du projet", puis en déployant à nouveau ce module Web sur le serveur Tomcat, c'est tout!

3
Bob Yang

J'ai supprimé le "dossier problématique" .metadata.plugins\org.Eclipse.wst.server.core \tmp0\ et ça marche maintenant :)

Le problème me laissait perplexe, car une autre dépendance de bocal fonctionnait avant que le problème ne se produise. J'utilise Eclipse Luna qui intègre déjà M2E et aucune des solutions ci-dessus ne fonctionne pour moi.

Le problème a commencé quand on a ajouté une nouvelle dépendance de jar à un projet Maven War, mais cela fonctionnait quand même bien quand celui-ci était commenté dans le pom Heureusement, j'ai pu comparer les deux projets et le problème a finalement été lié à une facette de projet manquante dans le nouveau projet jar: Utility Module.

  1. Bouton droit sur le projet: Facettes du projet
  2. Cochez "Utility Module" et sauvegardez
  3. Supprimez l'application de Tomcat et publiez-la à nouveau.
1
Luis Diaz

J'ai souffert de ce problème, mais la cause était différente…. Un problème est apparu à partir de wrong server name([Project Name] != [Server Name])… .. Je pensais que je pouvais comprendre par receate Server.

Ce problème peut résoudre en suivant les étapes ci-dessous:

  1. Supprimer le serveur: cliquez avec le bouton droit sur [Severs] et supprimez le serveur.
  2. Supprimer le serveur: cliquez avec le bouton droit sur [Project Explorer] et supprimez le serveur (que vous avez créé).
  3. Nettoyer le projet: menu[Project -> Clean]
  4. Créer un serveur: cliquez avec le bouton droit sur [Severs] et sur le nouveau serveur.
  5. Edit server.xml: Edit server.xml pour votre serveur Web.
  6. Ajouter un serveur: cliquez avec le bouton droit sur [Severs] et supprimez le serveur.
1
Halu Kim

Faites juste maven -> Mettez à jour la configuration du projet et nettoyez/construisez à partir de votre Eclipse. Le projet sera chargé.

1
arviarya

J'ai tout essayé sans succès. Je viens d'avoir un projet dans mon Eclipse. Fermez Eclipse, renommez le répertoire Eclipse, décompressez-le à nouveau, recommencez dans le nouvel Eclipse. Ça a marché.

Non ce n'est pas efficace.

0
Mustafa

Dans mon cas, il suffisait de copier (du projet en cours):

  1. .réglages
  2. .classpath
  3. .projets
0
SkorpEN

J'ai rencontré le même problème et le serveur de nettoyage et de recréation ne aide pas. Mais lorsque j'ai déployé un autre projet, il a pu démarrer avec succès. Après de nombreuses comparaisons, j'ai trouvé des différences dans les fichiers .project. Je copie donc le contenu du fichier .project du projet en cours dans celui qui pose problème, le rajoute au serveur et cela fonctionne. Voici le contenu du fichier .project qui fonctionne. Notez que vous devez modifier le nom du projet en conséquence:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Project Name</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
    <buildCommand>
        <name>org.Eclipse.wst.jsdt.core.javascriptValidator</name>
        <arguments>
        </arguments>
    </buildCommand>
    <buildCommand>
        <name>org.Eclipse.jdt.core.javabuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
    <buildCommand>
        <name>org.Eclipse.wst.common.project.facet.core.builder</name>
        <arguments>
        </arguments>
    </buildCommand>
    <buildCommand>
        <name>org.Eclipse.wst.validation.validationbuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
</buildSpec>
<natures>
    <nature>org.Eclipse.jem.workbench.JavaEMFNature</nature>
    <nature>org.Eclipse.wst.common.modulecore.ModuleCoreNature</nature>
    <nature>org.Eclipse.wst.common.project.facet.core.nature</nature>
    <nature>org.Eclipse.jdt.core.javanature</nature>
    <nature>org.Eclipse.wst.jsdt.core.jsNature</nature>
</natures>

0
gkl

Ce problème est peut-être dû au fait que votre projet local n’est pas synchronisé avec votre référentiel de code . 

0
Marcin Wasiluk

Étapes que j'ai suivies et qui fonctionneront à 100%:

  1. Nettoyez votre serveur et son répertoire de travail en cliquant avec le bouton droit de la souris sur le serveur.
  2. Supprimer le dossier du serveur de la fenêtre de votre explorateur de projet
  3. Supprimer le serveur de l'environnement d'exécution, c.-à-d. Eclipse -> Fenêtre -> Préférences -> Serveur -> Environnements d'exécution
  4. Fermez Eclipse et recommencez
  5. Exécutez à nouveau le fichier sur le serveur pour reconfigurer le serveur Apache.
  6. Problème résolu
0
Sahil
Check this version:

<web-app version="**2.5**" xmlns="http://Java.Sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee 
    http://Java.Sun.com/xml/ns/javaee/web-app_**2_5**.xsd" metadata-complete="true">

and 

org.Eclipse.wst.common.project.facet.core.xml

<installed facet="jst.web" version="**2.5**"/>

It can be incompatible with the chosen server. In my case when I tried to upgrade 3.0 Tomcat 6.0 stopped working so I had to revert back to 2.5


so upgrade your server to a highter version or downgrade the web.xml version and run maven --> update project and try again
0
Cynthia Elliot

Vérifier doc Tomcat pour la base de documents xyz n’existe pas ou n’est pas un répertoire lisible:

La base de documents n'existe pas ou n'est pas un répertoire lisible. L'URL spécifié par le paramètre war doit identifier un répertoire sur ce serveur qui contient la version "décompressée" d'une application Web, ou l'URL absolue d'un fichier WAR (application web archive) qui contient cette application. Corrigez la valeur spécifiée par le paramètre war.

Pouvez-vous manuellement "Nettoyer ..." puis "Publier" (à partir du menu contextuel sur Tomcat dans la vue Serveurs) une fois le projet propre terminé?

0
padis