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 :

Utilisation des packages


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Italie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Points : 18
    Points
    18
    Par défaut Utilisation des packages
    Bonjour,
    Après de nombreux essais et recherches en tous genre, je n'arrive toujours pas à utiliser les packages que je crée (je ne parle évidemment pas des packages de type java.io, java.swing ou autre, ceux-là je peux les importer sans problème).
    Pourtant je pense faire tout ce qu'il faut(j'ai lu une vingtaine de tutoriels sur la question): je déclare bien tous les packages en haut du fichier source .java, j'importe bien mes classes:Un exemple de ce que je fait serait:

    package projet.jeu.terrain;
    import projet.jeu.balle;
    public class Point{....

    .. et à chaque fois que je compile, énormément d'erreurs s'affichent.
    Mon programme ne fonctionne que si tous les fichiers sources sont dans le même répertoire et que je n'indique aucun package.( c'est à dire que je ne mets pas cette fameuse première ligne en haut du fichier).
    Je pense que le problème n'est pas dans les codes, mais alors d'où vient-il, peut-être une configuration que j'ai mal faite?
    Aidez-moi s'il vous plait parce que je dois maintenant réaliser un projet de plus grande taille, et je ne vais pas pouvoir garder toutes mes classes dans un seul répertoire, ça serait vraiment trop brouillon et fastidieux.
    merci d'avance

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 43
    Points : 48
    Points
    48
    Par défaut
    package projet.jeu.terrain;
    import projet.jeu.balle;
    public class Point{ ...

    implique que
    Point.java est dans le répertoire projet/jeu/terrain
    ton import est étrange. Si balle est une classe alors la syntaxe est bonne (néanmoins il est préférable de renommer ta classe Balle, par convention), toutefois si projet.jeu.balle est un package la syntaxe pour importer toutes les classes qu'il contient est 'import projet.jeu.balle.*'.

    Si tu as toujours des erreurs. Postes quelques classes au hasard, la hiérarchie des répertoires, et la façon dont tu compiles.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    et surtout, les message d'erreur

    en suivant ton code, pour compiler Point, il faudrait tapper

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javac projet/jeu/terrain/Point.java

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 114
    Points : 83
    Points
    83
    Par défaut
    Tu utilises la console Windows pour compiler tes programmes?

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Italie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    merci avant tout pour vos réponses, et désolée de ne pas avoir répondu plus tôt..effectivement mes exemples n'étaient pas très malins..
    du coup je suis repartie de zéro en reprenant les exemples du cours de mon prof du début d'année et en suivant méticuleusement ce qu'il nous disait de faire. Lui disait donc de créer deux répertoires un src , un autre lib et dans chacun des deux mettre les mêmes répertoire "cours" et "jbook". "cours contient "sw07" et "util" tandis que jbook contient "util" et "examples". Le fichier java à compiler est MultiplyBySum_02.java et il se sert de la classe Input lui-même contenu dans le "util" de "jbook".(j'espère que je suis assez claire!)

    voilà le code de MultiplyBySum_02.java(je poste tout, même si le code ne nous interesse pas, j'ai traduit les premiers commentaires de mon prof pas le reste- je fais mes études en italie):

    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
    46
    47
    48
    49
    50
    51
    52
    53
    // definition package. S'il n'est pas défini, il est défini "unnamed"
    package corso.sw07;
     
    // importe la classe Input 
    import jbook.util.Input;
     
    /**
     * Questo programma moltiplica due numeri interi maggiori o uguali a zero 
     * sommando il moltiplicando tante volte quanto il moltiplicatore
     * @version 1.1 2008-10-21
     * @author Antonio Messina
     */
     
    public class MultiplyBySum_02 // dichiarazione di classe pubblica
    {
        public static void main(String args[])
        {
            int moltiplicando;   // dichiarazione variabile tipo int
            // assegnazione da metodo classe Input
            moltiplicando = Input.readInt("Fornisci moltiplicando \n");   
    //        moltiplicando = jbook.util.Input.readInt("Fornisci moltiplicando \n");   
            int moltiplicatore;   // dichiarazione variabile tipo int
            // assegnazione da metodo readInt della classe Input
            moltiplicatore = Input.readInt("Fornisci moltiplicatore \n");   
    //        moltiplicatore = jbook.util.Input.readInt("Fornisci moltiplicatore \n");   
            int somma;    // dichiarazione variabile tipo int
            int zero = 0;    // dichiarazione e assegnazione variabile tipo int
            String avviso;    // dichiarazione variabile tipo String
            avviso = new String("\n" + "!!! Prodotto per somma !!!" + "\n"); // assegnazione variabile tipo String
            System.out.println(avviso);
     
            if (moltiplicando == zero || moltiplicatore == zero) // se uno dei termini e' nullo
            {
                somma = 0;
            }
            else
            {           
                // inizializzazione variabili ciclo ed effettuazione ciclo
                somma = 0;
                int count = 0;
                while (count < moltiplicatore)
                {
                    somma = somma + moltiplicando;
                    count++;
                }
            }
            // stampa risultati
            System.out.println("\n moltiplicando = " + moltiplicando + 
                "; moltiplicatore = " + moltiplicatore + "\n");
            System.out.println("!!! moltiplicazione per somma = " + 
                somma + " !!!" + "\n");
        }
    }

    voici le code de Input.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
    package jbook.util;
     
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;
    import java.util.Vector;
     
    /** 
        Una semplice classe per leggere stringhe e numeri 
        dallo standard input.
    */
     
    public class Input{.... 
    }
    là je ne poste pas tout car le code est trop long. pour résumer la classe remplace la classe Scanner(c'était pour simplifier, pour les débutants comme moi! )
    et donc quand je compile MultiplyBySum_02.java (même en ayant compilé au préalable Input.java), cela me donne comme erreurs:

    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
    %USERPROFILE%\Bureau\src\corso\sw07> javac MultiplyBySum_02.java
    MultiplyBySum_02.java:5: package jbook.util does not exist
    import jbook.util.Input;
                     ^
    MultiplyBySum_02.java:20: cannot find symbol
    symbol  : variable Input
    location: class corso.sw07.MultiplyBySum_02
            moltiplicando = Input.readInt("Fornisci moltiplicando \n");   
                            ^
    MultiplyBySum_02.java:24: cannot find symbol
    symbol  : variable Input
    location: class corso.sw07.MultiplyBySum_02
            moltiplicatore = Input.readInt("Fornisci moltiplicatore \n");   
                             ^
    3 errors
    Process javac exited with code 1
    voilà, donc je ne pense pas que l'erreur vienne du prof! , donc ça ne peut venir que de moi ou de ma configuration. J'ai entendu parler de CLASSPATH, moi je l'ai fait pointer sur mon jdk, serait-ce de là que vient le problème?

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    tu dois te mettre dans le répertoire %USERPROFILE%\Bureau\src et tapper

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javac corso\sw07\MultiplyBySum_02.java
    ceci en supposant que tu a bien un src/jbook/util/Input.java

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Italie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    tu dois te mettre dans le répertoire %USERPROFILE%\Bureau\src et tapper

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javac corso\sw07\MultiplyBySum_02.java
    ceci en supposant que tu a bien un src/jbook/util/Input.java
    je l'ai fait, mais rien à faire, il m'affiche toujours les mêmes erreurs..

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    tu as bien un src/jbook/util/Input.java, la structure de tes folders est pas claire. Fait nous une petit schéma.

  9. #9
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,



    C'est fou avec les EDIs plus personne ne sait compiler


    Pour compiler en Java il faut préciser au moins trois éléments :
    • Le classpath, c'est à dire le répertoire de base où seront recherchées les classes déjà compilé (librairies, etc.)
    • Le sourcepath, c'est à dire le répertoire de base où seront recherchées le code source des classes absentes du classpath. C'est à dire tes codes sources.
    • Le répertoire de destination des classes généré par le compilateur.



    Par défaut tout ces éléments correspondent au répertoire courant, ce qui permet uniquement de compiler "sans package".


    Dans le cas d'une architecture plus complexe, il est préférable de découper cela en trois répertoire au minimum :
    • lib/ qui contient les librairies annexes (fichiers .jar ou .zip)
    • src/ qui contient les fichiers sources.
    • obj/ qui contient les classes générées par la compilation.


    En considérant que tout cela se trouve sous le répertoire C:\projet, il faut alors spécifier tous les éléments :


    Il faut passer tous ces paramètres à chaque appel de javac, en plus du chemin vers le fichier sources à compiler. Le plus simple étant de les enregistrer dans un fichier "jargs.txt" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    -classpath c:\projet\lib\*
    -sourcepath C:\projet\src
    -d C:\projet\obj
    En référencent le fichier avec un @, afin qu'il soit lu comme un fichier de configuration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javac @C:\projet\jargs.txt *.java


    Maintenant si on doit concevoir un projet plus complexe, il est préférable de compiler avec d'autre outils comme Ant par exemple...


    a++

  10. #10
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Italie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Points : 18
    Points
    18
    Par défaut merci
    ça y est j'ai trouvé la réponse, effectivement je ne définissait aucun ClassPath.

    merci encore!

Discussions similaires

  1. Utilisation des packages
    Par magboom dans le forum SQL
    Réponses: 4
    Dernier message: 14/08/2007, 10h12
  2. Réponses: 1
    Dernier message: 24/05/2007, 15h32
  3. Réponses: 2
    Dernier message: 07/11/2006, 10h34
  4. Utiliser des packages ou des classes présents sur le net
    Par lionrouge dans le forum Général Java
    Réponses: 2
    Dernier message: 27/09/2006, 06h09
  5. [CR] Utilisation des package Oracle ??
    Par sboober dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 06/12/2004, 07h37

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