Java impossible de trouver ou charger la classe principale

Résolu
bonjour à tous.
j'ai ce fichu message qui apparaît lorsque je lance la commande java projet1.
Pourtant, tout fonctionne avec eclipse.
De plus, mon programme est élémentaire.

package projet1;
class projet1 {
    public static void main (String[] args){
     System.out.println("Hello World");
    }
 }

19 réponses

Résumé de la discussion

Un utilisateur rencontre un message d'erreur lorsqu'il lance la commande java projet1 malgré un Hello World simple fonctionnant sous Eclipse, avec une classe Java contenant un package projet1 et une méthode main. Plusieurs réponses proposent des solutions pratiques, telles que l'export en jar exécutable qui permet de contourner le problème, même si ce n'est pas une résolution du cœur du souci. Autre option: repartir d'une base simple en créant un nouveau fichier Java sans package dans un répertoire neutre, puis réintroduire le package une fois que le fichier compile, et tester étape par étape en ligne. D'autres remarques évoquent des détails comme la reconnaissance des noms de fichiers et des erreurs de frappe, et il est utile de vérifier le chemin d'accès, l'emplacement des sources et l'alignement package-dossier.

Bobot (l’IA à votre service)
  1. j'ai converti mon fichier.class en jar exécutable, et ça fonctionne.
    Donc je n'ai toujours pas de solution, mais au moins , je peux continuer de cette façons
    1
    1. Modérateur
      Je pense que le mieux aurait été de tout reprendre de zéro.
      Créer un nouveau fichier java, le mettre dans un répertoire simple, en dehors du projet Eclipse et recommencer les manipulations. Mais commence simple sans package.
      Une fois que ça aura marché sans package, tu rajoutes le package, et après tu déplaces le dossier plus loin, jusqu'au dossier d'Eclipse.
      Ainsi, on verrait bien à quel moment il y a un problème... de toute façon si tu veux faire ça à la main en invite de commandes, tu n'as pas besoin d'Eclipse pour l'instant.
      1
      1. Salut,

        De quelle manière à tu exporté ton projet ?
        0
        1. désolé, je ne comprends pas "exporté"?
          0
          1. As-tu créé un .jar pour exécuter ton projet ?
            0
        2. le résultat est le même avec la commande java projet1.projet1
          Aussi, je n'ai pas créé de .jar ... est ce nécessaire, il est déjà compilé en .class ?
          0
          1. Modérateur
            Et tu es où lorsque tu fais la commande ?
            Il faut que tu sois à la racine du projet, c'est à dire au dessus du dossier projet1.

            Exemple, si ton fichier compilé est
            C:\Workspace\projet1\projet1.class

            Tu dois faire
            java projet1.projet1
            dans le dossier
            C:\Workspace
            .
            Si tu le fais ailleurs, par exemple dans le répertoire
            C:\Workspace\projet1\
            ça ne sera pas bon.
            0
        3. j'ai bien essayé avec l'emplacement à la racine, mais ça ne fonctionne pas.
          0
          1. Modérateur
            Il y a un autre truc que je viens de voir : dans ton code, la classe projet1 doit être public sinon elle ne sera pas accessible pour se lancer.

            package projet1;
            public class projet1 { 
                public static void main (String[] args){ 
                    System.out.println("Hello World"); 
                } 
            }
            0
        4. ça ne fonctionne pas non pllus, avec une "class public"
          0
          1. Modérateur
            Et comment tu as compilé ta classe ? Tu étais bien au dessus du dossier projet1 lorsque tu as fait la commande javac ?

            javac projet1\projet1.java
            java projet1.projet1
            0
        5. ça ne marche pas non plus ...
          0
          1. Modérateur
            "ça ne marche pas non plus "
            C'est toujours le même message d'erreur ?

            Est-ce que tu peux faire ces commandes et me donner le résultat :

            java -version
            javac -version

            Ton code est bien dans un fichier projet1.java ? dans un dossier projet1 ?
            0
        6. java -version :
          java version "1.7.0_51"
          java SE Runtime environment build 1.7.0_51-b13
          java hotspot tm 64-bit server vm build 24.51-b03, mixed mode

          javac - version:
          javac 1.7.0_51

          mon code a été déclaré sous eclipse, et donc, oui dans un projet
          0
          1. Modérateur
            Oui mais Eclipse fait sa propre configuration.

            Tu dois donc avoir un dossier "src\projet1" avec un fichier projet1.java

            Si tu compiles avec Eclipse, tu as un dossier "bin\projet1" avec le fichier projet1.class dedans
            Il faut que tu ailles dans le dossier "bin" pour lancer la commande java projet1.projet1

            Si tu compiles avec javac, tu dois le faire dans le dossier "src" ce qui te générera un fichier projet1.class dans "src\projet1", il faudra alors aller dans le dossier "src" pour lancer la commande.
            0
        7. j'ai essayé avec les deux méthodes, via eclipse ou en manuel via javac, mais le résultat est le même. j'ai bien un fichier projet1.class quel que soit la méthode.
          J'ai dans tous les cas le même message!
          0
          1. Modérateur
            Est-ce que tu pourrais me faire une commande
            javap -v projet1.projet1 
            Cela devrait afficher un certain nombre d'informations, j'aimerais pouvoir les lire, et les comparer avec ce que j'ai chez moi, pour trouver la différence.
            0
            1. après avoir saisi la commande, le message suivant s'affiche :
              error : class not found: projet1.projet1
              0
              1. Modérateur
                Donc tu n'as pas de fichier .class en tout cas pas dans le dossier projet1.

                Rappel : si ton fichier projet1.java est à l'emplacement "src/projet1/projet1.java" tu devrais faire tes commandes à partir du dossier "src", ce qui devrait te créer le fichier "src/projet1/projet1.class" mais au vu de tes résultats tu n'es pas dans le dossier "src"
                0
            2. j'ai essayé à partir de tous les répertoires possibles, ta commande, mais en vain.
              J'ai toujours le même message :
              class not found : projet1.projet1

              sinon, le rituel , impossible de trouver ou charger la classe principale projet1
              0
              1. Modérateur
                Dans les deux cas cela correspond à une erreur de type "tu n'es pas dans le bon dossier"

                Lorsque tu fais une commande "pwd" qu'est-ce que cela te donne ?
                Si tu fais un "dir" est-ce que tu as bien le dossier "projet1" dans ta liste ?
                0
            3. pour la commande dir, il n'y a pas de soucis
              pour la commande pwd, elle n'est pas reconnue
              0
              1. Modérateur
                pour remplacer pwd tu peux utiliser
                echo %cd%
                , mais ce qui m'intéresse c'est le résultat du dir, est-ce que tu as bien le dossier "projet1" dans ta liste ?
                0
            4. oui oui, j'ai bien un projet1 en faisant un dir.
              Je l'ai d'ailleurs à plusieurs niveaux:
              d:\workspace\projet1\bin\project1\project1.class
              0
              1. Modérateur
                Oui mais là tu as des
                project1
                avec un C alors qu'avant c'était des
                projet1
                sans C.
                0
            5. dsl, erreur de frappe, il n'y a pas de c à projet1
              0
              1. Modérateur
                La question est donc de savoir à quel niveau tu es.

                Pour que ça marche tu dois être dans
                d:\workspace\projet1\bin\

                Là tu pourras faire
                java projet1.projet1


                Remarque : ça c'est la classe compilée par Eclipse, mais si tu veux le faire à la main, c'est plutôt dans
                d:\workspace\projet1\src\
                que tu devrais être, pour faire
                javac projet1\projet1.java
                puis
                java projet1.projet1
                .
                0
            6. j'ai déjà fait à plusieurs reprises ce que tu me recommandes de faire... mais ça ne marche toujours pas
              0
              1. J'ai eu le même problème et je l'ai résolu en ouvrant le fichier.class avec le bloc note, j'ai supprimé la ligne
                package projet1;
                et ça fonctionne à présent
                0
                1. Modérateur
                  Un fichier .class est obtenu après compilation, il ne peut donc pas être édité avec un bloc notes car il ne contient que du bytecode, donc impossible de supprimer la ligne concernant le package puisqu'elle ci n'existe plus, elle n'est présente que dans les codes sources .java d'origine.
                  0
                2. Merci Patxi64 !
                  c'est bien ça, il faut enlever "package projet1;" du .java et recompiler
                  0
              2. Modérateur
                "je lance la commande java projet1"
                Etant donné que tu as un package, tu devras le prendre en compte dans ta commande, ce devrait donc être
                java projet1.projet1
                -1