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 de compilation.


Sujet :

Java

  1. #1
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut Problème de compilation.
    Bonjour,

    J'ai fais un programme avec netbeans, sous gnu/linux. Il se lance bien de netbeans, il se lance bien avec java -jar mais quand j'essaye de compiler les sources avec javac, j'ai des messages d'erreur "cannot find symbol".
    Je ne sais pas d'ou cela vient, que manque t il ?
    Si quelqu'un a une idee, je suis preneur, merci beaucoup d'avance.

    Tres cordialement,

    ANDRE Ani

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 230
    Par défaut
    Bonjour,

    Difficile de debugger un programme sans le code source et le message d'erreur complet...
    Merci de nous transmettre ces éléments.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2009
    Messages : 112
    Par défaut
    Salut,

    C'est probablement un problème de classpath. Est-il bien configuré ?

  4. #4
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    Désolé, voilà le message d'erreur :

    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
    javac DepannageApp.java
    DepannageApp.java:7: package org.jdesktop.application does not exist
    import org.jdesktop.application.Application;
                                   ^
    DepannageApp.java:8: package org.jdesktop.application does not exist
    import org.jdesktop.application.SingleFrameApplication;
                                   ^
    DepannageApp.java:14: cannot find symbol
    symbol: class SingleFrameApplication
    public class DepannageApp extends SingleFrameApplication {
                                      ^
    DepannageApp.java:21: cannot find symbol
    symbol  : class DepannageView
    location: class depannage.DepannageApp
            show(new DepannageView(this));
                     ^
    DepannageApp.java:23: cannot find symbol
    symbol  : method getMainFrame()
    location: class depannage.DepannageApp
            this.getMainFrame().setSize(950, 620);
                ^
    DepannageApp.java:20: method does not override or implement a method from a supertype
        @Override protected void startup() {
        ^
    DepannageApp.java:32: method does not override or implement a method from a supertype
        @Override protected void configureWindow(java.awt.Window root) {
        ^
    DepannageApp.java:40: cannot find symbol
    symbol  : variable Application
    location: class depannage.DepannageApp
            return Application.getInstance(DepannageApp.class);
                   ^
    DepannageApp.java:47: cannot find symbol
    symbol  : method launch(java.lang.Class<depannage.DepannageApp>,java.lang.String[])
    location: class depannage.DepannageApp
            launch(DepannageApp.class, args);
            ^
    9 errors
    C'est un projet simple, sous netbeans. Et donc, tout marche bien, sauf quand j'essaye de compiler les sources (répertoire src d'un projet netbeans). Y a t il aussi besoin du repertoire lib ou d'autre chose pour compiler ? C'est un problème d'import on dirait.

    Merci d'avance si vous avez des suggestions.

    Très cordialement,

    ANDRE Ani

  5. #5
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 133
    Par défaut
    La classe org.jdesktop.application.SingleFrameApplication est dans un .jar ? Si oui, ce jar est-il bien renseigné comme librairie utilisée par le projet ?

    Enfin, si le problème n'est que lorsque tu compiles avec javac, essaie javac -cp ton.jar

  6. #6
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    Bonjour,

    Oui, cette classe est dans un jar, elle fait parti de appframework, qui est bien indiqué dans les librairies nécessaires.

    javac -cp mon.jar me renvoie :

    javac: no source files

    Voilà... Merci d'essayer de m'aider.

  7. #7
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 133
    Par défaut
    Oui, il faut préciser en plus les classes Java à compiler.

    man javac : javac <option> <source files>

    Donc quelque chose du genre javac -cp lib.jar */*.java pour compiler les classes Java du répertoire du courant. (le motif */*.java est peut-être à modifier)

  8. #8
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    Merci bien, je vais regarder ça.

    Après diverses tentatives, j'ai réussi à compiler avec cette commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javac -cp swing-worker-1.1.jar:appframework-1.0.3.jar *.java
    La, ça compile sans erreurs, avec les 2 jar qui sont dans le répertoire lib du projet netbeans.

    Puis les erreurs arrivent quand je lance la classe principale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ java DepannageApp.java
    Exception in thread "main" java.lang.NoClassDefFoundError: DepannageApp/java
    Caused by: java.lang.ClassNotFoundException: DepannageApp.java
    	at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
    	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
    	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336)
    Could not find the main class: DepannageApp.java. Program will exit.
    Même erreur en précisant le classpath :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp depannage */java

    Il manque encore des trucs au niveau de la compil, ou le pbm vient d'autre chose encore ?
    Merci d'avance,

    Très cordialement,

    ANDRE Ani

  9. #9
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2009
    Messages : 112
    Par défaut
    $ java DepannageApp.java
    Ce n'est pas comme ça qu'on lance un programme java

    Le fichier .java ne sert qu'à la compilation. C'est le fichier .class qui est ensuite exécuté. Tu le lances de cette manière (sans préciser l'extention) :

    Il ne faut lancer que la classe contenant le main. Si celle-ci se trouve dans un package la commande change un peu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java nomPackage.DepannageApp

  10. #10
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    Bonjour,

    Merci beaucoup de corriger mes erreurs. En effet, en plus de mon erreur de commande, c'est dans un package on dirait, et ce n'etait pas la bonne classe que j'essayais de lancer.

    Quand j'ai recommence, il m'a marque cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DepannageApp (wrong name: depannage/DepannageApp)
    J'ai donc corrige tout cela, mais, meme erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ java depannage/DepannageView
    Exception in thread "main" java.lang.NoClassDefFoundError: depannage/DepannageView
    Caused by: java.lang.ClassNotFoundException: depannage.DepannageView
    	at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
    	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
    	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336)
    Could not find the main class: depannage/DepannageView. Program will exit.
    Que manque t il ?

    Merci beaucoup d'avance,
    Tres cordialement,

    ANDRE Ani

  11. #11
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 133
    Par défaut
    java depannage.DepannageApp

    Il faut donner le nom complet de la classe que tu souhaites lancer.

  12. #12
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    Netbeans me dit que la main class est : depannage.DepannageApp
    Alors pourquoi toutes ces erreurs quand j'essaye de la lancer, je suis perdu.

  13. #13
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2009
    Messages : 112
    Par défaut
    java depannage/DepannageView
    Ce n'est pas un / mais un . qu'il faut mettre.

  14. #14
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 133
    Par défaut
    Essaie de rajouter dans le classpath les jar nécessaires à l'éxécution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -cp swing-worker-1.1.jar:appframework-1.0.3.jar:. depannage.DepannageApp
    En assumant que ta classe contenant le main est dans le fichier depannage/DepannageApp.java et que tu lances la commande dans le dossier le plus haut contenant tes fichiers .class (note le . dans l'option -cp)

    Et que tes librairies soient dans le même dossier, sinon modifies les entrées du classpath (java -cp ../lib/swing-worker-1.1.jar ...)

  15. #15
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    Tjs pareil...
    Ma classe principale est bien dans DepannageApp, les fichiers .class, .java et les 2 lib sont dans le meme dossier.
    Et j'ai tjs ces erreurs.

  16. #16
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2009
    Messages : 112
    Par défaut
    Ma classe principale est bien dans DepannageApp, les fichiers .class, .java et les 2 lib sont dans le meme dossier.
    DepannageApp est un répertoire ou le nom de ta classe contenant le main ?
    si c'est un repertoire tu dois faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp swing-worker-1.1.jar:appframework-1.0.3.jar:. depannage.DepannageApp.nomDeLaClasseMain

  17. #17
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    DepannageApp est le fichier source contenant la classe main.

  18. #18
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 133
    Par défaut
    Bon je ne sais plus trop quoi dire pour ce problème.

    Un NoClassDefFoundError, c'est typiquement un problème de classe ou librairie manquante.

    Si la classe contenant le main fonctionne bien sous Netbeans, alors cela veut dire que la signature de la méthode main est correcte, et devrait donc être trouvée.

    Et en assumant que ton arborescence est sous cette forme :
    - swing.jar
    - appworker.jar
    - depannage
    - DepannageApp.java
    - DepannageApp.class
    - */*.[java | class]

    Et, si en étant en tête de ton arbo et éxecutant

    java -cp swing.jar:appworker.jar:. depannage.DepannageApp, une erreur t'es renvoyée de type NoClassDef.., alors je ne saurais t'aider plus.

  19. #19
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    Pas grave, merci beaucoup pour tout.

  20. #20
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2009
    Messages : 112
    Par défaut
    Et en assumant que ton arborescence est sous cette forme :
    - swing.jar
    - appworker.jar
    - depannage
    - DepannageApp.java
    - DepannageApp.class
    - */*.[java | class]
    Enfin si j'ai bien suivi, tu dois avoir DepannageApp.java et DepannageApp.class dans le dossier depannage.

    Par contre as-tu bien ajouté package depannage; à la première ligne de la classe DepannageApp ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. problème de compilation sous visual C++
    Par fabmili dans le forum MFC
    Réponses: 4
    Dernier message: 08/02/2004, 19h52
  2. problème de compil devc++ socket
    Par stefdem dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 11/12/2003, 11h33
  3. Réponses: 1
    Dernier message: 29/10/2003, 12h16
  4. Problème de compilation de la DLL du XMLRad
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 2
    Dernier message: 16/04/2003, 16h46
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

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