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 :

les paquetages java


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Billets dans le blog
    3
    Par défaut les paquetages java
    Bonjour à tous ,
    je dispose d'un fichier zoo.java dont la première ligne composé de plusieurs classes ; après compilation chaque fichier .class correspondant aux classes ....
    je m'interroge déjà de comprendre pourquoi il n'y a pas de fichier zoo.class (mais bon ...).
    A quelque dossier de la (dossier parent) se trouve le fichier test.java principal chargé de tester les classes ...
    il comporte la ligne et fait référence à une classe Loup ; à la compilation j'obtiens un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Test.java:11: classes.Loup is not public in classes; cannot be accessed from outside package
    Bien sur ! sauf que je ne puis rendre cette classe publique puisque si je le fait j'obtiens (toujours à la compilation)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    zoo.java:38: class Loup is public, should be declared in a file named Loup.java
    D'un coté on me demande de déclarer la classe publique et de l'autre on me l'interdit ????
    Que faire ?

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Ce serait mieux si tu nous montrer le code complet. Mais je suppose que tu as un fichier zoo.java comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    package classes;
    public class zoo {
    }
    class Loup {
    ]
    ou peut être même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    package classes;
    class zoo {
    }
    class Loup {
    ]
    La classe Loup n'est pas public, donc inaccessible depuis une autre classe que zoo. Et tu ne peux pas la rendre publique parce qu'elle est déclarée dans le fichier zoo.java et qu'il ne peut y avoir qu'une classe public par fichier .java, dont le nom est le nom du fichier (sans l'extension bien sûr). Comme indiqué dans le message d'erreur, il faut déclarer Loup dans un fichier Loup.java.

    C'est en effet étrange que tu ne vois pas de fichier zoo.class. Tu es sûr de ne pas avec de dossier classes avec le fichier zoo.class dedans. Comment fais tu la compilation ? Par un IDE ou par ligne de commande ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre éclairé
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Billets dans le blog
    3
    Par défaut
    Merci pour la réponse ; j'ai refondé mes fichiers comme indiqué.
    Je compile sans IDE ; je connais un peu eclipse mais ne l'utilise plus depuis que j'ai un Mac.
    Si j'ai bien compris on ne peut gouper plusieurs classes publique dans un fichier java puisqu'il
    faut une correspondance entre le nom de fichier et la classe.
    Tant pis ! Je créerai 1 classe par fichier ... Je trouve dommage la non-existence des include comme
    en C++ .

  4. #4
    Membre Expert
    Avatar de Mickael_Istria
    Homme Profil pro
    Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Inscrit en
    Juillet 2008
    Messages
    1 479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 479
    Par défaut
    Citation Envoyé par exe2bin Voir le message
    Je compile sans IDE ; je connais un peu eclipse mais ne l'utilise plus depuis que j'ai un Mac.
    Pourquoi tu ne l'utilises plus? Java c'est quand meme plus sympa avec un IDE!

  5. #5
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    NB: on ne peut déclarer qu'une seule classe publique DE PREMIER NIVEAU par fichier java.

    On peut tout à fait faire ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // Fichier Outer.java
    package xxx;
    public class Outer {
        public class Inner1 {}
        public static class Inner2 {}
    }
     
    // Autre fichier
    import xxx.Outer.Inner2;
     
    Inner2 inner2 = new Inner2();
    Magique

  6. #6
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    Citation Envoyé par Pill_S Voir le message
    NB: on ne peut déclarer qu'une seule classe publique DE PREMIER NIVEAU par fichier java.
    On peut tout à fait faire ça:
    .....
    Magique
    Certes, certes mais est-ce une facilité juste pour faire joujou?
    une classe interne de ce type devrait avoir une justification:
    - parce qu'elle partage des raisons d'être avec la classe englobante (par ex. accès à des données ou codes private)
    - parce qu'il y a une interdépendance étroite (par ex. un code de Inner réference Outer qui a un code qui référence Inner: c'est tout à fait possible)

    Donc juste pour le fun c'est certes possible mais est-ce politiquement correct?

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

Discussions similaires

  1. Passer les certifications java sans se ruiner.
    Par Turtle dans le forum Certifications
    Réponses: 7
    Dernier message: 21/03/2005, 09h21
  2. Relations entre les Paquetages
    Par bran_noz dans le forum UML
    Réponses: 4
    Dernier message: 25/06/2004, 14h05
  3. [Plugin] Récupérer tous les fichiers *.java d'un workspace
    Par Satch dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 02/06/2004, 12h51

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