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. 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. 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
      1. 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
      2. 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
      3. ç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
      4. ç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
      5. 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
      6. 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 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. 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