web-dev-qa-db-fra.com

Erreur: impossible de trouver ou de charger la classe principale dans intelliJ IDE

Je suis un débutant en Java et j'essaie d'exécuter mon code avec IntelliJ que je viens d'installer en tant que IDE avec JDK 1.7. Le morceau de code suivant ne compile même pas et continue à me donner l'erreur:

Error: Could not find or load main class libTest

Code

import Java.lang.Integer;
import Java.lang.String;
import Java.lang.System;
import Java.util.*;

class book {

    private String name = "trial";
    private int bookCode=1;
    private int issued=0;

     public void Issue(){
         if(issued==0) {
             issued=1;
             System.out.println("You have succesfully issued the book");
         }
         else {
             System.out.println("The book is already issued. Please contact the librarian for further details");
         }
    }

    public int checkCode() {
        return bookCode;
    }

    String readName() {
        return name;
    }

    public void setName(String newName){
        name=newName;
    }

    public void setBookCode(int newCode){
        bookCode=newCode;
    }
}

class library {
    private ArrayList books=new ArrayList();

    public void getList(){
        for(int bk:books){
            String bName=books(bk).readName();
            System.out.println((bk+1)+")  "+bName);
        }
    }
}

public class libTest{
    public static void main(String[] args){
        library newLib= new library();
        System.out.println("code working");
   }
}

Y at-il un changement que je dois faire dans les paramètres du compilateur? Ou est-ce le code.

70
Confused Mailman

Cela pourrait aider:

1) Menu "Construire" -> "Rebuild Project" . Parfois, Intellij ne réécrit pas les classes car elles existent déjà, ainsi vous demandez à Intellij de tout réécrire.

2) Menu "Exécuter" -> "Edit configuration" -> supprimer le profil -> rajouter le profil ("Application" s'il s'agit d'une application Java), choisissez votre classe principale dans le menu déroulant "Classe principale". 

3) Menu "Construire" -> "Rebuild Project". 

83
Ehsan

Pour moi, la solution consistait à réparer le répertoire de sortie sous les paramètres du projet. Avant, je n'utilisais que "cible" pour la sortie du compilateur du projet. Au lieu de cela, je l'ai mis à jour pour avoir un chemin complet, par exemple. D:\dev\sigplusjava2_68\target  enter image description here

48
Uncle Iroh

Si aucune des réponses ci-dessus ne vous convient, fermez simplement votre fichier intelliJ IDE et supprimez le fichier et le dossier intelliJ IDE de la racine du projet: 

rm -rf .idea *.iml 

Ouvrez ensuite le projet avec intelliJ. Cela doit fonctionner maintenant.

36
youhans

Créer explicitement un dossier out puis définir le chemin de sortie à C:\Users\USERNAME\IdeaProjects\PROJECTNAME\out

LIKE THIS

semblait fonctionner pour moi lorsque out venait à peine et qu'IntelliJ ne créerait pas le dossier.


Essayez également d’avoir IntelliJ pour vous faire une nouvelle configuration d’exécution:

Trouvez le précédent en cliquant sur

![Edit Configurations

puis l'enlever

enter image description here

et frapper d'accord.

Maintenant, (étape importante) ouvrez la classe contenant votre méthode principale. Ceci est probablement plus facile en cliquant sur le nom de la classe dans la partie gauche du projet. Vitre.

Donne 'un Alt + Shift + F10 et vous devriez avoir un

THIS

Maintenant frappé Enter!!

Tadah ?? (Cela a-t-il fonctionné?)

10
Brad Turek

J'ai eu ce problème et j'ai tout essayé sous le soleil auquel je pouvais penser et sur ce site. 

Aucune de mes classes Java n'a été reprise après avoir été extraite d'une branche distante. Toutes les classes avaient des J rouges par leurs noms dans la hiérarchie de projets, pas des C bleus.

En fin de compte, j'ai essayé de suivre ce tutoriel et quelques étapes pour essayer quelque chose de non décrit et résoudre le problème: https://www.jetbrains.com/help/idea/creating-and-managing-modules .html

Voici ce que j'ai fait:

  1. Goto File | Structure du projet ou appuyez sur Ctrl + Maj + Alt + S
  2. Sélectionnez Modules dans la section Paramètres du projet. 
  3. Dans l'onglet Sources, cliquez sur Sources sur la ligne "Marquer comme:". 
  4. Cliquez sur le bouton Appliquer. 

Pour une raison quelconque, toutes mes classes avaient alors des C bleus. 

Quelqu'un avec une meilleure compréhension de la façon dont IntelliJ et/ou les IDE pourraient peut-être expliquer le phénomène, mais tout ce que je sais, c'est qu'il peut maintenant voir toutes les classes et surtout la classe principale, et s'exécuter. 

9
Sarah Cohen

Je sais que cela a été demandé il y a quelque temps, mais je tombais sur une question et pensais que mes conclusions pourraient aider les autres. Comme indiqué, le message d'erreur est essentiellement le résultat du dossier de sortie. En effet, lorsque vous essayez d'exécuter le programme, il compile d'abord le code, puis place le résultat compilé à l'emplacement de sortie, puis essaie de charger le code compilé à partir de l'emplacement de sortie. Si le code compilé ne se trouve pas à l'emplacement prévu, vous obtiendrez l'erreur. 

Ce que je veux surtout dire, c’est que parfois, le code n’est pas compilé (construit), même si votre configuration d’exécution spécifie "Construire" dans la section "Avant le lancement" du panneau de configuration. 

Quand cela peut-il arriver? Cela peut arriver si vous utilisez des modules et que vous supprimez manuellement le répertoire de sortie des modules. Par exemple, si j'ai un module nommé "foo", il devrait y avoir un répertoire nommé foo sous out/production. Si vous le supprimez manuellement, le système de génération peut ne pas savoir qu'il doit être reconstruit. 

Pire encore, si vous sélectionnez Construire | Construisez le module 'foo', il ne peut toujours pas reconstruire le module. Si tel est le cas, vous devez sélectionner un fichier dans le module, par exemple 'bar.Java', puis sélectionner Construire | Recompiler 'bar.Java'. Le répertoire out out/production/foo doit maintenant être restauré. 

Étant donné qu'IntelliJ est généralement au courant des changements en cours, cela m'a surpris et pris un peu de temps à comprendre, alors j'ai pensé partager. 

4
msoltys

Vérifiez votre module de classe : J'ai rencontré le problème suivant avec intellij: corrigé en configurant le bon module ("edit configuration" -> "use class of module") 

que cela vous aide

4
Abdessattar NOISSI

Je devais marquer le dossier "src" comme "Sources". Après avoir redémarré IntelliJ et reconstruit le projet, je pouvais exécuter le projet sans autre problème (voir capture d'écran ) . Modifier: Vous pouvez accéder à l'onglet "Structure du projet" via Fichier-> Structure du projet ou en appuyant sur Ctrl + Maj + Alt + S.

3
NEMESIS

J'ai rencontré de tels problèmes lorsque la classe est dans le dossier par défaut, c'est-à-dire lorsque la classe ne déclare pas de package.

Donc, je suppose que l’utilisation d’une instruction de paquetage (par exemple, package org.me.mypackage;) au-dessus de la classe devrait résoudre ce problème.

2
Hakan Serce

Invalider le cache et redémarrer votre intellij, ça a marché pour moi .  Go to File as show in the attached picture

2
SKK

Marquez le répertoire en tant que répertoire source. Ouvert via Ctrl + Shift + Alt + S

 enter image description here 

1
Crt

J'ai hérité d'un tas de fichiers .Java provenant d'ailleurs et je n'arrivais pas à comprendre comment les faire fonctionner dans n'importe quel IDE. Finalement, je devais aller à la ligne de commande où se trouvait le fichier Main.Java et lancer javac Main.Java. Cela a créé un groupe de fichiers .CLASS. Les IDE ont ensuite été en mesure de déterminer quoi faire.

1
codeMonkey

Ouvrir l'onglet Modules (Appuyez sur Ctrl + Maj + Alt + S). J'ai eu deux modules dans un projet. J'ai résolu le problème après avoir retiré le deuxième module redondant (voir capture d'écran) .  enter image description here

1
Taras Melnyk

Dans mon cas, le problème semblait être lié à la mise à niveau d’IntelliJ. Lorsque j'ai fait cela, j'ai écrasé les fichiers de l'ancien IntelliJ avec ceux de la nouvelle IntelliJ (communauté 2017 à la communauté 2018). Après cela, tous mes projets ont été brisés. J'ai tout essayé dans ce fil et aucun d'entre eux n'a fonctionné. J'ai essayé de mettre à niveau gradle vers la dernière version (4 à 4.8) et cela n'a pas fonctionné. La seule chose qui a fonctionné pour moi a été de supprimer le dossier IntelliJ en entier et de le réinstaller. Tous mes projets ont fonctionné par la suite.

1
blindcant

Pour moi, j'ai essayé quelques-unes des options ci-dessus, cela n'a pas fonctionné. Ensuite, je viens de renommer ma classe Application, ce qui a probablement forcé intelliJ à créer un nouveau pot et le message d'erreur a commencé à changer. Ensuite, je l'ai renommé et cela a fonctionné.

1
JavaTec

Dans mon cas, dans build.gradle du module, l'affectation mainClassName doit indiquer le nom de classe complet, c'est-à-dire. tel que spécifié en tant que nom de package dans le fichier de code source de la classe principale.

0
Matthew

Pour moi, le problème était un caractère spécial dans le chemin du fichier.

IntelliJ m'a permis d'ouvrir le projet. Cependant, lorsque j'ai construit/exécuté le projet, il ne pouvait plus localiser la classe car elle transformait le chemin du fichier pour supprimer le caractère spécial et cherchait donc dans le mauvais répertoire.

Pour résoudre le problème, je viens de supprimer le caractère spécial du nom du dossier dans lequel mon projet était stocké et de le rouvrir dans IntelliJ.

0
Mitchell Cash

J'ai essayé tous les bidouilles suggérées ici - en vain. À la fin, j'ai simplement créé une nouvelle application Maven et y ai copié manuellement - une par une - les fichiers et les ressources Java et pom.xml. Tout fonctionne maintenant. Je suis nouveau chez IntelliJ et je ne suis absolument pas impressionné, mais il est facile de le faire entrer dans un état instable.

0

J'ai eu cette erreur en utilisant Scala/SBT. IntelliJ n'a pas pu trouver la classe principale, même si tout a été configuré correctement. Ma solution: supprimez le dossier <user>/.sbt/<version>/plugins/target, puis redémarrez IntelliJ.

0
Beni Murza

Recréez simplement le projet (CTRL + F9) et revérifiez (Modifiez les configurations) si vous avez une classe principale correctement définie et un module (le cas échéant).

0
AlexPes

 enter image description here 

modules.xml avec un contenu erroné, je ne sais pas ce qui compte dans mon IDEA.

0
ibamboo

Explications sur la solution de Brad Turek ... L'un des modèles de projet Java IntelliJ par défaut requiert un fichier appelé Main définissant les points d'entrée de la méthode classe Main et main (). Si la méthode est contenue dans un autre fichier (et classe), modifiez la configuration Run:

Fenêtre Exécuter la configuration

  1. Une fois le projet ouvert dans IntelliJ, utilisez le menu Exécuter: Modifier les configurations ... Pour ouvrir la fenêtre de configuration de la construction. 
  2. Si l'entrée pour Main class ne répertorie pas le nom de votre fichier contenant la classe exposant la méthode d'entrée main (), entrez le nom de fichier correct. (La configuration dans l'image est incorrecte, c'est pourquoi elle est rouge dans le panneau de configuration.) 
  3. Ma méthode d'entrée main () est dans la classe (et le fichier) ScrabbleTest. Donc changer Main class: en ScrabbleTest corrige l'erreur d'exécution.

Comme d'autres l'ont noté, vous devez ReBuild à l'aide de la nouvelle configuration. J'utilise un package, mais cela ne semble pas faire la différence IME. J'espère que cela t'aides.

0
JHake

Suivez ces étapes

  1. Aller courir
  2. Aller à éditer les configurations
  3. Cliquez sur le signe + coloré en vert en haut à gauche
  4. Sélectionnez le type que vous travaillez, par exemple "Applications"
  5. Maintenant, entrez le nom de la classe que vous voulez exécuter au lieu de non nommé 
  6. Faites la même chose où il est écrit classe principale, juste en dessous.

Yippee .... votre code fonctionnera :)

0
Nikhil Goyal