248 votes

Comment ajouter un répertoire au classpath dans un profil d'exécution d'application dans IntelliJ IDEA ?

Je suis en train d'essayer d'ajouter un répertoire au classpath d'un profil d'exécution d'application

Si je surcharge en utilisant -cp x:target/classes dans les paramètres VM, j'obtiens l'erreur suivante:

java.lang.NoClassDefFoundError: com/intellij/rt/execution/application/AppMain

Avez-vous une idée de comment ajouter un répertoire au classpath pour mon projet?

1 votes

Il n'est pas clair pour moi, où vous essayez d'ajouter cela. À partir de la ligne de commande IJ? Ou dans les propriétés du projet?

0 votes

335voto

stivlo Points 28997

Dans Intellij 13, il semble que ce soit légèrement différent à nouveau. Voici les instructions pour Intellij 13:

  1. cliquez sur l'affichage du projet ou dévoilez-le en cliquant sur le bouton "1: Projet" sur le bord gauche de la fenêtre ou en appuyant sur Alt + 1
  2. trouvez votre projet ou sous-module et cliquez dessus pour le mettre en surbrillance, puis appuyez sur F4, ou faites un clic droit et choisissez "Ouvrir les paramètres du module" (sur IntelliJ 14, c'est devenu F12)
  3. cliquez sur l'onglet des dépendances
  4. Cliquez sur le bouton "+" à droite et sélectionnez "Fichiers JAR ou répertoires..."
  5. Trouvez votre chemin et cliquez sur OK
  6. Dans la boîte de dialogue "Choisir les catégories du fichier sélectionné", choisissez Classes (même s'il s'agit de propriétés), appuyez sur OK et OK à nouveau
  7. Vous pouvez maintenant exécuter votre application et le chemin sélectionné sera dans le chemin de classe

3 votes

Alors, comment créer des configurations d'exécution avec deux répertoires différents qui doivent être exclusivement présents dans l'un mais pas dans l'autre. Dans Eclipse, vous pouvez ajouter/supprimer n'importe quoi à une configuration de lancement. IntelliJ ne prend-il pas en charge cela?

12 votes

Il est assez clair que vous pouvez changer le classpath de la configuration d'exécution en changeant le classpath du module. Mais la question exacte était "comment ajouter un répertoire au classpath dans un profil d'exécution d'application". Ainsi la réponse a été donnée par uaaquarius

0 votes

Merci! Cela a résolu mon problème après des recherches interminables!

100voto

samkass Points 2595

Il semble qu'IntelliJ 11 ait modifié la méthode, et la réponse vérifiée ne fonctionne plus pour moi. Au cas où quelqu'un d'autre arriverait ici via un moteur de recherche, voici comment j'ai résolu le problème dans IntelliJ 11 :

  1. Allez dans Structure du projet, cliquez sur Modules, et cliquez sur votre module
  2. Choisissez l'onglet "Dépendances"
  3. Cliquez sur le bouton "+" du côté droit et sélectionnez "Fichiers ou répertoires..."
  4. Ajoutez le(s) répertoire(s) souhaité(s) (vous pouvez en sélectionner plusieurs) et cliquez sur OK
  5. Dans la boîte de dialogue qui s'ouvre, sélectionnez "classes" et PAS "répertoire de jar"
  6. Assurez-vous d'utiliser ce module dans la cible de votre exécution

Remarquez que l'étape 5 semble être la différence clé. Si vous sélectionnez "répertoire de jar", cela ressemblera exactement pareil dans l'IDE mais ne comprendra pas le chemin d'accès à l'exécution. Il semble qu'il n'y ait aucun moyen de déterminer si vous avez précédemment sélectionné "classes" ou "répertoire de jar" après coup.

4 votes

Merci beaucoup d'avoir posté ceci. Vous venez de me sauver une heure environ.

1 votes

J'ai le même problème qu'avant avec IJ11 et j'étais heureux de trouver une réponse qui m'attendait cette fois-ci.

0 votes

Parfait. Même processus pour IJ12. Je suis tombé sur ce message en essayant de résoudre 'java.lang.ClassNotFoundException: com/microsoft/jdbc/sqlserver/SQLServerDriver'. Cela a résolu le problème de connexion. Merci

45voto

uaaquarius Points 108

Vous pouvez essayer l'option -Xbootclasspath/a:chemin du lanceur d'application Java. Selon la description, elle spécifie "un chemin séparé par des deux-points de répertoires, d'archives JAR et d'archives ZIP à ajouter au chemin de classe de démarrage par défaut".

2 votes

Voici quelques informations sur le fonctionnement de -Xbootclasspath : docs.oracle.com/cd/E15289_01/doc.40/e15062/optionx.htm#i1018‌​570

5 votes

Ceci est une bonne réponse car elle ne nécessite pas de modifier la configuration de votre projet. En fait, je pense que cela répond le mieux à la question.

2 votes

Malheureusement, cela n'a pas fonctionné pour moi, car cela entraîne le chargement de toutes les classes à partir de ce chemin de classe par le chargeur de classe bootstrap, ce qui casse le code qui suppose que Xyz.class.getClassLoader() n'est pas nul.

19voto

Mike Pone Points 4840

Je utilise Idea 8. dans votre onglet de dépendances de module (dans la boîte de dialogue de la structure du projet). Ajoutez une "Bibliothèque de module". Là, vous pouvez sélectionner un répertoire Jar à ajouter. Ensuite, assurez-vous que le profil d'exécution utilise le Classpath et le JDK du bon module lors de son exécution (cela se trouve dans la boîte de dialogue de configuration d'exécution).

2voto

Suppose you need only x:target/classes in your classpath. Then you just add this folder to your classpath and %IDEA%\lib\idea_rt.jar. Now it will work. That's it.

4 votes

La question est comment ajouter ce dossier à votre classpath dans IDEA?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X