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

avec Java Discussion :

package et compilation


Sujet :

avec Java

  1. #1
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 181
    Points : 82
    Points
    82
    Par défaut package et compilation
    Bonjour,
    j'ai 2 fichiers se nommant a.java et b.java


    a.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import p.*;
    public class a {
     
        public static void main(String[] args) {
        b toto=new b(3);
        	// TODO, add your application code
        	System.out.println("Hello World!");
        }
    }

    b.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    package p;
    public class b {
      public int a;
      public b(int x)
        {
            this.a=x;
        }
    }

    il y a dans b un package p;

    j'ai compilé avec jcreator et ça marche
    donc j'ai copié a.java et b.java dans le dossier bin de jdk
    je tape javac b.java et c'est bon
    javac a.java et ça s'arrête sur la ligne b toto=new(3) car il ne connaît pas la classe visiblement.

    Comment compiler
    merci

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    quand une classe est dans un package, elle doit être dans le sous-répertoire de même nom que ce package. Sinon le compilateur ne comprend pas comment la trouver quand il compile des classes qui ont besoin d'elle.

    Exemple, supposons que j'ai les classes suivantes :

    Zorglub dans le package heros.

    Chien dans le package animaux.

    Start pas dans un package.

    Du coup mes fichiers doivent respecter l'arborescence suivante pour que ça marche :

    Code arborescence : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    racine de mes fichiers source Java
      |
      + animaux/
      | + Chien.java
      + heros/
      | + Zorglub.java
      + Start.java

    et pour compiler, me mettre à la racine, dans le même répertoire que Start.java, et :

    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    javac *.java animaux/*.java heros/*.java
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 181
    Points : 82
    Points
    82
    Par défaut
    excuses moi je n'ai pas compris

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Bah là je me suis exprimé en bon français et j'ai donné un exemple concret avec un schéma, donc, si t'a pas compris on va faire de notre mieux pour clarifier, mais...

    Il faudrait peut-être dire sur quelle phrase tu as du mal exactement, et nous parler un peu de ce que tu penses que ça pourrait essayer de dire mais il y a quelque chose qui est pas clair pour toi.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 181
    Points : 82
    Points
    82
    Par défaut
    non, mais en utilisant mes fichiers tu aurais pu me dire ce qu'il faut modifier
    merci

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Je pourrais mais tu es là pour apprendre le fonctionnement de la chose, pas pour qu'on corrige ton exercice.
    Quand on te donne une solution il faut qu'elle marche pour tout, pas juste pour le code que tu viens de montrer. Sinon tu n'apprends rien et tu n'as fait aucun progrès.
    Alors arrête de dire qu'on te donne pas ce que tu veux et prends ce qu'il y a à prendre, on est pas débutants et on sait ce qu'on fait.

    Ce qu'il faut changer c'est l'endroit où ils sont.
    La classe qui est dans le package p doit être dans un sous-répertoire p.
    Pour comprendre l'idée générale, relis mon exemple.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 181
    Points : 82
    Points
    82
    Par défaut
    je ne comprend pas ca :
    La classe qui est dans le package p doit être dans un sous-répertoire p.
    un sous répertoire p, je ne comprend pas
    merci

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Quand tu affiches tes fichiers dans ton ordinateurs, il y a grosso-modo deux trucs dans la liste :

    - des fichiers, les machins qui ont des dessins spécialisés, des extensions et qui contiennent des données sur le disque dur
    - des répertoires, aussi appelés "dossiers" sous Windows, qui contiennent d'autres fichiers et répertoires, formant ainsi une arborescence sur tout ton disque dur.

    Quand tu essaies de compiler tes classes Java en ligne de commande, tu as typiquement une invite de commande genre C:\Users\thelvin\Documents\perso\java> qui dit que tu es sur le disque C:, dans son répertoire Users, dans son répertoire thelvin, dans son répertoire Documents, dans son répertoire perso, dans son répertoire java. Et là il y a tes fichiers Java que tu veux compiler.

    Un sous-répertoire, c'est un répertoire qui est contenu dans un autre répertoire. En pratique ils le sont toujours, mais quand on dit "sous-répertoire," en fait on veut dire "un répertoire qui est dans le répertoire dans lequel tu te trouves"

    Donc, maintenant qu'on sait ça. Puisque tu as une classe qui est dans un package qui s'appelle "p", tu dois mettre cette classe dans un sous-répertoire qui s'appelle "p".
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 181
    Points : 82
    Points
    82
    Par défaut
    j'ai créé un répertoire p
    j'ai tapé javac *.java p\*.java mais ca ne change rien jai toujours la meme erreur

  10. #10
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Tu peux montrer le contenu de ton répertoire en cours et du sous-répertoire p ?
    En gros, où sont tous tes trucs ?

    Parce que j'ai bien dit que la classe doit être dans le sous-répertoire p, et je t'ai pas vu dire que tu l'avais mise dans le sous-répertoire p.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 181
    Points : 82
    Points
    82
    Par défaut
    erreur :
    bad class file :.p\b.class
    class files contain wrong class :b.b
    please remove or make sure its appears in the correct in the correct subdirectory of the class path

  12. #12
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 181
    Points : 82
    Points
    82
    Par défaut
    a la racine j'ai a.java
    puis dans p jai b.java

  13. #13
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 181
    Points : 82
    Points
    82
    Par défaut
    javac *.java c:\Program Files\java\jdk1.8.0_144\bin\p\*.java

  14. #14
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    T'es sûr que t'as pas aussi des fichiers .class ? Il faut effacer ceux qui avaient été mal faits, ils gênent. Le plus simple est de tous les effacer tant que tu continues à avoir des erreurs.

    Ah, euh, et puis tu devrais peut-être mettre tes classes ailleurs que dans le répertoire d'installation de Java. Genre dans ton répertoire perso, c:\Users\jmc\java ou quelque chose comme ça.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 181
    Points : 82
    Points
    82
    Par défaut
    toujours la meme erreur
    erreur sur b toto=new (3);
    bad source file .\p\b.java
    file does not contain class p.b

  16. #16
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    On recommence, liste des emplacements précis de chaque fichier, et leur contenu exact.

    Copier/coller le contenu bien sûr, sois gentil d'arrêter de recopier des trucs en les retapant. Tu copies, et tu colles. Merci.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  17. #17
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 181
    Points : 82
    Points
    82
    Par défaut
    sur c: jai mis a.java
    dans c:\p j'ai mis b.java
    je tape javac *.java .\p\*.java

  18. #18
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 181
    Points : 82
    Points
    82
    Par défaut
    j'ai une erreur sur a.java
    la ou ya
    import p.*;
    etc

  19. #19
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 181
    Points : 82
    Points
    82
    Par défaut
    je reprend a zero
    je met a.java sur c:
    je met b.java sur c:\p

    a.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import p.*;
    public class a {
     
        public static void main(String[] args) {
        b toto=new b(3);
        	// TODO, add your application code
        	System.out.println("Hello World!");
        }
    }


    b.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    package p;
    public class b {
    	public int a;
     public b(int x)
    	{
    		this.a=x;
    	}
    }
    j'ai tapé javac *.java .\p\*.java
    j'ai un message d'erreur sur public class a{ de a.java
    error whilez writing a:a.class (acces refusé)

  20. #20
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Bon du coup ça c'est complètement autre chose.
    Il ne faut pas travailler directement sur C:, Windows déteste ça. Et puis, disons-le, c'est quand même pas franchement prudent. C'est un coup à effacer des fichiers systèmes par erreur.

    Normalement tu dois avoir un répertoire à toi qui contient "Documents", "Images" et trucs de ce genre. Ça devrait ressembler à C:\Users\jmc.
    Je te suggère de créer un répertoire "java" dedans, ce qui fait C:\Users\<tonnom>\java

    Dedans tu mets ton a.java, et un répertoire p dans lequel tu mets b.java.
    Et tu refais pareil, cette fois il ne refusera pas de créer des fichiers ici.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. [Debutant] compilation automatique
    Par Yannos94 dans le forum JBuilder
    Réponses: 5
    Dernier message: 05/09/2007, 15h08
  2. [POI] echec de compil, package introuvable
    Par hugo123 dans le forum Documents
    Réponses: 2
    Dernier message: 05/10/2005, 11h33
  3. [debutant] compilation g++ : undefined reference
    Par xavlours dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 10/03/2005, 15h49
  4. [langage] Question débutant compilation PERL
    Par sebbyoguard dans le forum Langage
    Réponses: 5
    Dernier message: 04/09/2004, 19h39
  5. [servlet][debutant] compilation impossible
    Par omega dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 02/03/2004, 11h48

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