Pb avec mon prg java

Bonjour,
je sui novice dans le programmation
je vient d'ecrire un prg,qui suit:
public class sdz1
{
public static void main (String[] args)
{
System.out.print("Hello world!");

}
}

en le compilant avec javac sdz1.java dans le cmd (dos mod)
il affiche un error message suivante:

sdz1.java:1:class,interface,or enum expected

pourtant je fais marcher ce prg avec Eclipse, il n'y a aucun error,où est ce que je puisse tromper
veuillez m'aiderz s'il vous plaît
Configuration: Windows XP Internet Explorer 6.0

11 réponses

  1. De retour, désolé j'ai pas pu repasser depuis quelques jours.

    A tester :
    Recommence la ligne de commande "c:\Program Files\Java\jdk1.6.0_12\bin\javac.exe" dans dos en utilisant l'auto-complétion.

    en gros, a chaque fois que tu commence a taper une partie du chemin (juste après un \), tu appuie sur la touche [tabulation] jusqu'a trouver la partie du chemin que tu voulais, et tu recommences jusqu'à arriver à javac.exe

    en gros tu devrais taper un truc du genre :

    c:\pro
    [tab]
    \ja
    [tab]
    \jd
    [tab]
    \b
    [tab]
    \ja
    [tab]

    et tu recommence ce que je t'ai donné comme indication précédemment.

    Si ca ne marche toujours pas et que tes chemins sont justes de façon certaine (en ayant utilisé l'auto-complétion), alors ton problème doit certainement venir de ton classpath qu'il faut configurer, puisqu'il semblerait que ton systeme ne trouve pas tes classes.

    Dans ce cas la je ne pourrais pas t'aider plus parce que je n'y connais pas grand chose, par contre tu peux aller voir ce lien qui devrait t'aider a terminer de résoudre tes problèmes:

    http://www.commentcamarche.net/forum/affich 6156793 java lang noclassdeffounderror
    0
    1. Place toi dans le répertoire où il y a ton fichier sdz1.java

      a priori si tu n'as rien changé tu dois avoir ceci devant toi comme avant :

      C:\program files\java\sdz1>

      tapes juste ces deux lignes, ca devrait suffire a compiler et à lancer, j'ai testé chez moi et ça marche sans problème :

      "c:\Program Files\Java\jdk1.6.0_12\bin\javac.exe" sdz1.java

      "c:\Program Files\Java\jdk1.6.0_12\bin\java.exe" sdz1

      (avec les guillemets surtout)

      je reviendrais dans quelques heures, dis moi si ca a marché
      0
      1. C:\program files\java\sdz1>"c:\Program Files\Java\jdk1.6.0_12\bin\javac.exe" sdz1.java

        il y un error message:

        ' "c:\Program Files\Java\jdk1.6.0_12\bin\javac.exe" sdz1.java'
        n'est pas reconnu en tant que commande interne ou externe,un program executable ou un fichier de commandes
        0
      2. poukkid ,t'est revenu
        0
    2. Regarde bien les noms de fichiers, classe, compilation, etc parce que tu as un problème de frappe c'est sûr.

      Si ca ne marche toujours pas, donne moi le chemin de ton compilateur javac.exe,

      normalement c'est quelquechose du genre
      c:\program files\Java\jdk1.6.0_13\bin\javac.exe

      recopie le chemin et avec tu pourras compiler de n'importe où en précisant l'adresse du compilateur.
      0
      1. j'ai bien javac.exe dans
        C:\Program Files\Java\jdk1.6.0_12\bin\javac.exe
        0
    3. Exception in thread "main" java. lang.NoClassDefFoundError:sdz1<wrong name sdz1/sdz1>
      ..............................................................................................................................
      ..............................................................................................................................
      could not find the main class:adz1. Program will exit

      Comme tu vois il cherche adz1 et non pas sdz1, verifie bien tous tes noms, noms de la classe dans le .java, nom du fichier, et les noms utilisés lors de la compilation, ton erreur vient d'une faute de frappe.
      0
      1. non,c'est moi qui a trompé c'est une erreur de frappe il cherche class sdz1,
        dans mon repertoire j'ai bien sdz1.class

        java -cp class sdz1.java
        il s'affiche suivant message:
        Exception in thread "main" java. lang.NoClassDefFoundError:sdz1<wrong name sdz1/sdz1>
        ..............................................................................................................................
        ..............................................................................................................................
        could not find the main class:sdz1. Program will exit
        0
    4. c:\program files\java\sdz1>javac -d class sdz1.java
      il a bien compilé

      et j'ai executé avec:
      java -cp class sdz1.java
      il s'affiche suivant message:
      Exception in thread "main" java. lang.NoClassDefFoundError:sdz1<wrong name sdz1/sdz1>
      ..............................................................................................................................
      ..............................................................................................................................
      could not find the main class:adz1. Program will exit
      0
      1. javac:directory not found:class

        signifie que le répertoire class n'existe pas,
        désolé c'est de ma faute, j'ai oublié de préciser qu'il fallait créer le répertoire class dans C:\program files\java\sdz1>

        crée le (avec la commande mkdir class ou bien à la main dans windows) et relance la compilation puis l'exécution
        0
        1. il s'affiche suivant message:
          Exception in thread "main" java. lang.NoClassDefFoundError:sdz1/java caused by: java.lang.ClassNotFoundExecption:sdz1.java
          ..............................................................................................................................
          ..............................................................................................................................
          could not find the main class:adz1. Program will exit
          0
      2. Non, je réécrivais le chemin de ton dossier sdz1 pour que tu te repères, tu compile depuis
        c:\program files\java\sdz1>
        donc ne bouge pas de là, et lances juste ces deux lignes :

        javac -d class sdz1.java

        java -cp class sdz1
        0
        1. c:\program files\java\sdz1>javac -d class sdz1.java

          j'ai ces messages:
          javac:directory not found:class
          usage:javac<option><source files>
          use -help for a list of possible options
          0
      3. Ton programme marche-t-il ?

        cp signifie classpath, c'est à dire le chemin (path) ou tu as stocké tes fichiers .class
        si tu as des soucis avec cette option, tu peux également ecrire classpath en entier :
        c:\program files\java\sdz1\java -classpath class sdz

        d signifie directory, et permet de spécifier l'endroit où le compilateur va créer les .class
        0
        1. j'ai écris comme ça
          c:\program files\java\sdz1>c:\program files\java\sdz1\javac sdz1.java

          j'ai reçu le message suivante:

          'c:\program' nest pas reconnu en tant que commande interne ou externe un prg executable ou un fichier decommandes
          0
      4. Ca veut dire qu'il ne trouve pas tes .class qui ont été compilés.
        tu peux essayer de te placer dans le répertoire où ont été créés les .class.

        Si ca ne marche toujours pas (un peu plus compliqué):

        après avoir compilé avec <javac sdz1.java>, tu peux préciser lors de l'exécution avec <java> le chemin ou se trouve ton fichier.class :
        java -cp chemin sdz1

        (chemin est le chemin où se trouve le .class en question)
        Pour cela, il faut savoir où se trouve le .class que java a créé lors de la compilation (fais une recherche)
        ou alors précises lors de la compilation avec javac l'endroit où tu souhaites créer les fichiers .class:

        compilation et création des fichiers .class dans c:\program files\java\sdz1\class :
        c:\program files\java\sdz1\javac -d class sdz1.java

        exécution en précisant l'emplacement des .class :
        c:\program files\java\sdz1\java -cp class sdz1
        0
        1. que signifie
          -d et -cp

          compilation et création des fichiers .class dans
          c:\program files\java\sdz1\class :
          c:\program files\java\sdz1\javac -d class sdz1.java

          exécution en précisant l'emplacement des .class :
          c:\program files\java\sdz1\java -cp class sdz1
          0
      5. Ca veut dire que la compilation s'est bien passée.

        <javac sdzi.java> permet de compiler ton code source et créer autant de .class qu'il y a de classes dans ton code source.

        Ensuite tu n'as plus qu'a exécuter la classe principale, soit ici sdz1 :

        la commande (avec le chemin) est la suivante (sans extension pour sdzi):
        c:\program files\java\sdz1\java sdzi
        0
        1. je fais comme tu m'ai dit
          c:\program files\java\sdz1\java sdz1

          il s'affiche suivant message:
          Exception in thread "main" java. lang.NoClassDefFoundError:sdz1<wrong name sdz1/sdz1>
          ..............................................................................................................................
          ..............................................................................................................................
          could not find the main class:adz1. Program will exit
          0
      6. Salut,

        Essaye
        System.Out.println("Hello world!");

        Pour aller plus vite sur eclipse, tu tapes sysout et Ctrl+espace...
        0
        1. j'ai essayé comme tu m'a dit

          et essayé compilé:
          c:\program files\java\sdz1\javac sdzi.java

          il m'affiche simplement
          c:\program files\java\sdz1
          pas d'autres

          dans l'eclipse marche bien,seulement dans le dos mode marche pas
          0