Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme de package et d'import

Sujet résolu
    24 mars 2009 à 18:19:16

    Bonsoir à tous,

    Je fais actuellement un programme "Tour de Hanoi" et la gestion des packages et des imports m'empechent d'avancer :(
    Les fichiers .java sont tous placés dans un même dossier tp (src/tp)

    Tour.java
    import tp.Disque;
    
    /** Definit la notion de pile de disques pour modeliser les tours de Hanoi
     * utilisable par exemple pour les tours de Hanoi
     * @author 
     *
     */
    public class Tour {
      
      private Disque[] lesDisques ; // tableur de disques d'une certaine capacite
      private int nbDisques ; // nombre de disques effectivement presents
      private String nom ; // le nom de la tour (A, B ou C)
      
      
      
      /** Construit une nouvelle tour d'une hauteur donnee
       * 
       * @param nbDisques la capacite de cette tour
       * @param nom le nom de cette tour
       */ 
      public Tour(String n, int capacite) {
    	if (hauteur >=1) {
        this.lesDisques = new Disque[hauteur] ;
        this.nom = n;
        this.nbDisques = 0 ;
        }
      }
      
      /** test si la tour est vide   */ 
      public boolean estVide() {
      return this.nbDisques==0;
      
      }
      
      
      /** renvoie le nom de la tour */ 
      public String getNom() {
      return this.nom; }
      
      
      
      /** renvoie le disque au sommet de la tour */ 
      public Disque getSommet(){
      if(this.estVide()) { return null; }
      else { return this.lesDisques[this.nbDisques-1]; }  
      }
        
        /** ajout d'un disque à la tour si elle n'est pas encore pleine */ 
      public void ajouterDisque(Disque d) {
     	 if (this.nbDisques < this.lesDisques.length()) {
      		this.lesDisques[this.nbDisques] = d;
      		this.nbDisques++;
      							 }
      }
        /** enleve le disque au sommet de la tour si elle n'est pas vide */ 
      public Disque enleverDisque() {
      if (this.nbDisques == 0) {return null;}
      else { return this.lesDisques[this.nbDisques--]; }
      }
      
        /** renvoie le nombre de disques de la tour */ 
      public int getNbDisques() { 
      return this.nbDisques;}
      
      
      }
    


    Disque.java

    package tp;
    /** Definit une classe assez geneerale de disque empilable
     * utilisable par exemple pour les tours de Hanoi
     * @author 
     *
     */
    public class Disque {
    
      private final int taille ;
      
      /** Construit un nouveau disque d'une taille donnee
       * 
       * @param taille la taille de ce disque
         */ 
      public Disque(int taille) {
      this.taille = taille ;
      }
      
      /**
       * Determine si ce Disque est egal a un objet donne
       * @param o l'objet a comparer
       * @return true si et seulement si o est egall a ce Disque
       */
      public boolean equals(Object o) {
    	  if (o == null || ! (o instanceof Disque)) return false ;
    	  return this.taille == ((Disque) o).taille ;
      }
      
      /**
       * Compare ce Disque et un objet donne
       * @param o l'objet a comparer
       * @return un entier strictement positif si ce Disque
       * est strictement plus grand que o, un entier strictement negatif
       * si ce Disque est strictement plus petit que o sinon retourne zero
       */
      public int compareTo(Disque d) {
    	  return this.taille - d.taille ;	  
      }
      
      /**
       * Determine si ce Disque est empilable sur un disque donne
       * @param d le disque sur lequel on teste l"empilabilite"
       * @return true si et seulement si ce Disque est empilable sur d
       */
       public boolean empilableSur(Disque d) {
        return this.taille <= d.taille ;
      }
      
       /**
        * Retourne la taille de ce Disque
        * @return la taille de ce Disque
        */
      public int getTaille() {
        return this.taille ;
      }
      
      /**
        * Retourne une representation textuelle de ce Disque
        * @return une representation textuelle de ce Disque
        */
      public String toString() {
    	  StringBuffer sb = new StringBuffer() ;
    	  for(int i = 0 ; i < this.taille ; i++) sb.append('_') ;
          return sb.toString() ;
      }
    }
    



    Quand je compile Disque.java, c'est OK, mais pour Tour.java, j'ai des erreurs où le compilateur n'a pas l'air de reconnaitre les "Disque" dans la classe Tour :(

    javac Tour.java -d ../../classes/
    Tour.java:1: package tp does not exist
    import tp.Disque;
              ^
    Tour.java:10: cannot access Disque
    bad class file: ./Disque.java
    file does not contain class Disque
    Please remove or make sure it appears in the correct subdirectory of the classpath.
      private Disque[] lesDisques ; // tableur de disques d'une certaine capacite
              ^
    2 errors



    Quelqu'un pourrait-il m'aider pour correctement définir les packages et import dans ces 2 classes SVP ? :(
    Merci d'avance!


    • Partager sur Facebook
    • Partager sur Twitter
      24 mars 2009 à 18:29:16

      ils sont dans le même package donc pas besoin d'import
      • Partager sur Facebook
      • Partager sur Twitter
        24 mars 2009 à 18:39:28

        Merci de ta réponse rapide ;)

        Mais si je ne met aucun import et juste package tp;, j'ai plusieurs erreurs, toujours les memes :(

        Tour.java:10: cannot find symbol
        symbol  : class Disque
        location: class tp.Tour
          private Disque[] lesDisques ; // tableur de disques d'une certaine capacite
                  ^
        Tour.java:43: cannot find symbol
        symbol  : class Disque
        location: class tp.Tour
          public Disque getSommet(){
                 ^
        Tour.java:49: cannot find symbol
        symbol  : class Disque
        location: class tp.Tour
          public void ajouterDisque(Disque d) {
                                    ^
        Tour.java:56: cannot find symbol
        symbol  : class Disque
        location: class tp.Tour
          public Disque enleverDisque() {
                 ^
        Tour.java:22: cannot find symbol
        symbol  : variable hauteur
        location: class tp.Tour
                if (hauteur >=1) {
                    ^
        Tour.java:23: cannot find symbol
        symbol  : class Disque
        location: class tp.Tour
            this.lesDisques = new Disque[hauteur] ;
                                  ^
        Tour.java:23: cannot find symbol
        symbol  : variable hauteur
        location: class tp.Tour
            this.lesDisques = new Disque[hauteur] ;
                                         ^
        7 errors


        Sais tu où se situe le probleme ? :( Encore merci
        • Partager sur Facebook
        • Partager sur Twitter
          24 mars 2009 à 18:49:24

          Si tu n'as que ces deux fichiers sources, alors à la limite retire l'instruction package de tes deux classes. Sinon en mettant package tp; dans tes deux classes ça devrait marcher...
          • Partager sur Facebook
          • Partager sur Twitter
            24 mars 2009 à 18:55:01

            Merci ! J'ai viré les packages et après avoir enlevé les erreurs de ma part, ca compile :) Merci beaucoup!
            • Partager sur Facebook
            • Partager sur Twitter

            Probleme de package et d'import

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown