web-dev-qa-db-fra.com

Échec du lancement de l'application (erreur CreateProcess = 87), impossible d'utiliser la solution de raccourcissement du chemin de classe

Lorsque je lance notre application dans Eclipse sous Windows, je reçois l'erreur suivante:

Une exception s'est produite lors de l'exécution de la ligne de commande.

Impossible d'exécuter le programme ..: erreur CreateProcess = 87, le paramètre est incorrect

J'ai résolu ce problème dans le passé en raccourcissant le CLASSPATH.

Je suis maintenant arrivé à un point où je ne peux plus raccourcir le CLASSPATH, et j'aimerais savoir s'il existe d'autres solutions.

http://support.Microsoft.com/kb/83047 semble indiquer que la longueur maximale de la ligne d'invite de commande dans Windows XP est de 8191 caractères, et la seule solution est de raccourcir les noms de dossier, de réduire la profondeur de arborescences de dossiers, utilisation de fichiers de paramètres, etc.

29
Ivo Bosticky

Cette eclipsecoding FAQ page confirme votre diagnostic:

Lorsque le CLASSPATH devient trop long, le programme ne peut pas être lancé (au moins sous Windows) - essayez de raccourcir votre chemin de classe. Dans le cas d'un plugin, vous pouvez essayer de supprimer les plugins requis inutiles.

Et vous avez ici un fil détaillant les erreurs de journal.

Puisque vous pouvez lancer Eclipse, mais pas l'application, je vérifierais si vous n'avez pas trop de plugins inclus dans votre configuration de lancement. Pourriez-vous vérifier si vous avez ajouté uniquement les plugins requis ?

16
VonC

Comme solution de contournement:

  1. Ouvrez votre configuration d'exécution Eclipse pour la tâche qui échoue.
  2. Choisissez l'onglet classpath, sélectionnez le classpath par défaut, cliquez sur le bouton "Modifier .."
  3. Cochez la case "Inclure uniquement les entrées exportées".

Cela m'a permis de contourner ce problème sur Eclipse 3.6 (Helios)

12
Nick

C'est certainement un problème avec le chemin de classe étant trop long, ce qui fait que la ligne de commande dépasse sa limite maximale. pour résoudre, raccourcissez votre chemin de classe. Si vous utilisez Maven (comme je l'étais - par exemple dans le développement Jive), changez l'emplacement de votre .m2 en modifiant le fichier maven settings.xml

<settings>
  <localRepository>c:/.m2/repository</localRepository>
</settings>

puis déplacez votre référentiel à partir du répertoire utilisateur, mais assurez-vous que les paramètres.xml et settings-security.xml (le cas échéant) se trouvent toujours dans le répertoire utilisateur. De cette façon, le chemin de classe n'affichera plus c:\Documents and Settings\username.m2 mais plutôt c: .m2 permettant une diminution significative du chemin de classe et donc de la longueur de la commande. N'oubliez pas que dans Windows, vous ne pouvez pas créer un répertoire (par vous-même) avec le nom .m2, et donc vous devez couper le répertoire, collez-le dans c: puis copiez-le dans votre dossier utilisateur

2
Moe

Comme j'ai eu le même problème avec Eclipse Helios (la seule version officiellement supportée par notre département) et que j'ai eu beaucoup de mal à résoudre le problème, voici la solution:

Installez la dernière Eclipse (dans mon cas 4.3.2 a fait le travail).

Ce problème avait été signalé comme un bug Eclipse: https://bugs.Eclipse.org/bugs/show_bug.cgi?id=32719 et il est maintenant corrigé.

J'espère que cela aidera les futurs utilisateurs qui accéderont à cette page.

1
user1485864

Il s'agit d'un bogue connu dans Eclipse: Bogue 32719 - [patch] Le lancement de la ligne de commande dépasse la limite de commande de création de processus sous Windows

Il sera corrigé avec Eclipse e4 4.3 sorti en 2013. Il n'a pas été jugé suffisamment important pour être corrigé dans 3.4.2. Mais dans les pièces jointes au bogue, vous pouvez trouver quelques classes de remplacement pour corriger votre version d'Eclipse.

1
Aaron Digulla

Utilisez un lien dynamique qui peut être facilement créé avec juncion (http://technet.Microsoft.com/en-us/sysinternals/bb896768). Créez le lien pour votre projet et ajoutez-le à Eclipse via cela. utilisation par exemple: md d:\shortname junction d:\shortname\d:\my\very\long\long\long\long\long\long\projectnamefolder

1
Imre Szikora

Je faisais face au même problème sur Eclipse, donc, pour cette raison, j'ai décidé d'essayer le même projet sur Intellij, juste pour savoir s'il s'agissait d'un problème IDE.

Étonnamment, Intellij détecte ce problème (chemin de classe long) et m'affiche une boîte de dialogue, me recommandant d'utiliser la fonction de chemin de classe dynamique. Après avoir activé cette option, le problème a disparu.

Quel est le drapeau dynamic.classpath: Que fait le drapeau dynamic.classpath? (Paramètres du projet IntelliJ)

Alors, maintenant ma question est: existe-t-il un moyen de faire la même chose sur Eclipse? semble être une solution simple et élégante à ces problèmes, au lieu de supprimer manuellement toutes les dépendances qui ne sont pas nécessaires.

1
Mauro Monti

J'ai rencontré le même problème, les fichiers jar de non-construction référencés par le projet. Supposons que tools-1.6.jar est construit et ajouté en tant que dépendance. Plus tard, le code source de tools-1.6.jar pourrait être modifié et une installation propre #mvn non effectuée.

J'ai fait une construction propre et mis à jour la dépendance maven, l'erreur a été résolue.

0
Paramesh Korrakuti

Une solution que j'ai pour Eclipse consiste à fermer certains projets qui sont activés via la résolution de l'espace de travail, et à la place de les résoudre à partir de votre référentiel Maven local. Cela a fonctionné pour moi de toute façon

0
DJ180

J'ai rencontré le même problème. Essayer d'exécuter une page d'album ne réussirait pas, quoi que j'aie essayé. J'ai vérifié le contenu de ma direcotry .plugins dans l'espace de travail. J'ai remarqué beaucoup de fichiers d'index dans le répertoire de org.Eclipse.jdt.core. J'ai renommé ce répertoire et maintenant un processus d'album peut être exécuté à nouveau.

0
Rob in het Veld