IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Problème pour exécuter un .class


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Altenide
    Homme Profil pro
    Formateur en technologies web
    Inscrit en
    Décembre 2008
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Formateur en technologies web
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2008
    Messages : 129
    Par défaut Problème pour exécuter un .class
    Bonjour, je me tire les cheveux.

    Je suis sur un Seven 64bit et je tente de lancer un .class en dos avec la commande

    et systématiquement j'ai l'erreur ci-dessous :

    Erreur : impossible de trouver ou charger la classe principale Toto

    j'ai compilé Toto.java avec

    aucun problème ...

    les deux fichiers .java et .class sont dans le même répertoire

    j'éxécute bien mon java Toto depuis le répertoire où sont les fichiers (surtout le class).

    les variables d'environnement de mon système son ok sinon je n'aurais pas pu compiler.

    J'ai lu tout ce qu'on pouvait lire sur la question sans succès.

    Avez vous une idée ? merci

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Peux tu nous poster le code de ta classe Toto ? A-t-elle vraiment un main ?
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  3. #3
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    ta classe Toto fait-elle partie d'un package ?
    genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    package test;
    public class Toto {
     
    	public static void main(String[] args) {
    		System.out.println("hello world !");
    	}
     
    }
    dans ce cas c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -classpath /racine/de/ton/package Toto
    dans mon cas, si je suis dans le dossier test, ce serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -classpath .. Toto

  4. #4
    Membre confirmé Avatar de Altenide
    Homme Profil pro
    Formateur en technologies web
    Inscrit en
    Décembre 2008
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Formateur en technologies web
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2008
    Messages : 129
    Par défaut
    merci, malheureusement ;

    la commande java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -classpath /fr/posive/Toto
    me renvoi vers l'aide de java -help

    et la commande me renvoi la même erreur

    Erreur : impossible de trouver ou charger la classe principale Toto

    je ne comprends pas.

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    1 quelle est ta classe (code source)
    2 dans quel dossier sont le .java et le .class
    parce que je doute (vu ton /fr) que la classe soit dans une dossier fr à la racine d'un filesystem linux
    3 donne nous l'output complet de ta console, incluant tes commande, un dir pour qu'on vois clair, la compilation, etc

    La commande pour lancer java est, en général

    java nom.du.package.LaClasse en etant dans le dossier à la racine du projet (donc à un endroit d'où, relativement parlant, on peux trouver un fichier nom/du/package/LaClasse.class)

  6. #6
    Membre confirmé Avatar de Altenide
    Homme Profil pro
    Formateur en technologies web
    Inscrit en
    Décembre 2008
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Formateur en technologies web
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2008
    Messages : 129
    Par défaut
    voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    c:\>type Test.class
    ╩■║¥   3 ↔
     ♠ ☼     ► ↕
     ‼ ¶ § ▬☺ ♠<init>☺ ♥()V☺ ♦Code☺ ☼LineNumberTable☺ ♦main☺ ▬([
    SourceFile☺     Test.java♀ ↨♀ ↑ ↓☺ hello !
    c:\>type Test.java
    package fr.positive;
     
    public class Test {
     
            /**
             * @param args
             */
            public static void main(String[] args) {
                    System.out.println("hello !");
     
            }
     
    }
     
    c:\>dir
     Le volume dans le lecteur C n'a pas de nom.
     Le numéro de série du volume est 18CA-968C
     
     Répertoire de c:\
     
    05/06/2012  20:51    <REP>          Backup
    18/06/2012  21:19    <REP>          dev
    06/07/2012  14:56    <REP>          fr
    05/12/2011  05:25    <REP>          Intel
    02/07/2012  14:33    <REP>          maven
    14/07/2009  05:20    <REP>          PerfLogs
    29/06/2012  17:13    <REP>          Program Files
    03/07/2012  12:26    <REP>          Program Files (x86)
    06/07/2012  14:56    <REP>          resources
    05/12/2011  05:29             2*184 RHDSetup.log
    05/12/2011  06:31    <REP>          samsung
    23/06/2012  21:55               184 Setup.log
    06/07/2012  14:54               421 Test.class
    06/07/2012  14:01               164 Test.java
    05/06/2012  16:57    <REP>          Users
    11/06/2012  20:58    <REP>          wamp
    03/07/2012  12:26    <REP>          Windows
                   4 fichier(s)            2*953 octets
                  13 Rép(s)  145*761*206*272 octets libres
    et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    c:\>java test
    Erreur : impossible de trouver ou charger la classe principale test
     
    c:\>java fr.positive.test
    Erreur : impossible de trouver ou charger la classe principale fr.positive.test
     
    c:\>java \fr\positive\test
    Erreur : impossible de trouver ou charger la classe principale \fr\positive\test
     
    c:\>java /fr/positive/test
    Erreur : impossible de trouver ou charger la classe principale .fr.positive.test

  7. #7
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ton .java et ton .class devraient être dans c:\fr\positivie avec un tel code source.

    Donc déplace les là , puis un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c:\>java fr.positive.Test
    fera l'affaire (attention aux majuscules!)

  8. #8
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    Citation Envoyé par Altenide Voir le message
    merci, malheureusement ;

    la commande java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -classpath /fr/posive/Toto
    me renvoi vers l'aide de java -help

    et la commande me renvoi la même erreur

    Erreur : impossible de trouver ou charger la classe principale Toto

    je ne comprends pas.
    l'option -classpath rajoute le dossier qui suit au classpath
    ensuite il te faut mettre la classe que tu appelles...
    donc si tu es dans le dossier posive, ta commande sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -classpath chemincomplet/vers/racine Toto
    ou en relatif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -classpath ../.. Toto

  9. #9
    Membre confirmé Avatar de Altenide
    Homme Profil pro
    Formateur en technologies web
    Inscrit en
    Décembre 2008
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Formateur en technologies web
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2008
    Messages : 129
    Par défaut
    Merci pour vos réponses.

    Donc je reprends. Je suis sur Eclipse je créé une classe Toto.java qui contient une méthode main avec un syso. Cette classe est dans le package fr/positive/Toto.java . Je prends cette classe je la met dans un répertoire test à la racine de mon disque C:/test

    Je passe en dos :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    C:\test>dir
     Le volume dans le lecteur C n'a pas de nom.
     Le numéro de série du volume est 18CA-968C
     
     Répertoire de C:\test
     
    17/07/2012  09:44    <REP>          .
    17/07/2012  09:44    <REP>          ..
    17/07/2012  09:43               163 Toto.java
                   1 fichier(s)              163 octets
                   2 Rép(s)  111*717*363*712 octets libres
    je test ma version java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    C:\test>java -version
    java version "1.7.0_04"
    Java(TM) SE Runtime Environment (build 1.7.0_04-b22)
    Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)
    je regarde le contenu de la classe Toto.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    C:\test>type Toto.java
    package fr.positive;
     
    public class Toto {
     
            /**
             * @param args
             */
            public static void main(String[] args) {
                    System.out.println("eureka !");
            }
     
    }
    Je compile ma classe Toto.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    C:\test>javac Toto.java
     
    C:\test>dir
     Le volume dans le lecteur C n'a pas de nom.
     Le numéro de série du volume est 18CA-968C
     
     Répertoire de C:\test
     
    17/07/2012  09:52    <REP>          .
    17/07/2012  09:52    <REP>          ..
    17/07/2012  09:52               422 Toto.class
    17/07/2012  09:43               163 Toto.java
                   2 fichier(s)              585 octets
                   2 Rép(s)  111*738*204*160 octets libres

    Voici le code Compilé du .class Toto

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    C:\test>type Toto.class
    ╩■║¥   3 ↔
     ♠ ☼     ► ↕
     ‼ ¶ § ▬☺ ♠<init>☺ ♥()V☺ ♦Code☺ ☼LineNumberTable☺ ♦main☺ ▬([Ljava/lang/String;)V☺
    SourceFile☺     Toto.java♀ ↨♀ ↑ ↓eureka !

    Je tente un java toto :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    c:\test>java Toto .
    Exception in thread "main" java.lang.NoClassDefFoundError: Toto (wrong name: fr/positive/Toto)
            at java.lang.ClassLoader.defineClass1(Native Method)
            at java.lang.ClassLoader.defineClass(Unknown Source)
            at java.security.SecureClassLoader.defineClass(Unknown Source)
            at java.net.URLClassLoader.defineClass(Unknown Source)
            at java.net.URLClassLoader.access$100(Unknown Source)
            at java.net.URLClassLoader$1.run(Unknown Source)
            at java.net.URLClassLoader$1.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
    pb de chemin ?

    Je créé un nouveau répertoire dans C:/test/fr/positive
    et j'y met mon Toto.class et mon Toto.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    c:\test>dir c:\test\fr\positive
     Le volume dans le lecteur C n'a pas de nom.
     Le numéro de série du volume est 18CA-968C
     
     Répertoire de c:\test\fr\positive
     
    17/07/2012  10:28    <REP>          .
    17/07/2012  10:28    <REP>          ..
    17/07/2012  10:28               422 Toto.class
    17/07/2012  09:43               163 Toto.java
                   2 fichier(s)              585 octets
                   2 Rép(s)  111*736*569*856 octets libres
    puis je retente et :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    c:\test>java fr/positive/Toto
    eureka !
    eureka ... ! Et bien ce fut laborieux ...

    merci pour votre aide qui m'a permis d'y voir un peu plus clair.

  10. #10
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    on va même être un peu pédant, ça aurait du être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c:\test>java fr.positive.Toto
    java fonctionne avec des noms de classe et de package, pas avec des chemins

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème pour instancier une class
    Par gronaze dans le forum C++
    Réponses: 8
    Dernier message: 30/06/2006, 12h21
  2. Problème pour exécuter un script Perl
    Par jungle360 dans le forum Langage
    Réponses: 5
    Dernier message: 23/04/2006, 14h37
  3. methode pour exécuter une class dans un jar
    Par yann_p dans le forum Langage
    Réponses: 2
    Dernier message: 18/04/2006, 17h47
  4. [PEAR][DB] Configurer les classes
    Par cladsam dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 20/02/2006, 14h11
  5. Problème pour exécuter une chaîne de caractères
    Par Pongo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/09/2005, 10h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo