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 :

Erreur "declaration package does not match"


Sujet :

avec Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut Erreur "declaration package does not match"
    Bonjour,

    J'ai écrit un programme et en le compilant j'ai les erreur suivantes :
    Exception in thread "main" java.lang.Error: Unresolved compilation problem:
    The declared package "" does not match the expected package "Package1"

    at Package1.Student.<init>(Student.java:1)
    at Test.<init>(Results.java:4)
    at Results.<init>(Results.java:19)
    at Hybrid.main(Hybrid.java:7)

    at Package1.Student.<init>(Student.java:1)
    //import Package2.*;

    at Test.<init>(Results.java:4)
    class Test extends Student

    at Results.<init>(Results.java:19)
    public class Results extends Test implements Sports

    at Hybrid.main(Hybrid.java:7)
    Results student1=new Results();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Student 
    {
     int rollNumber;
     public void getNumber(int n)
     {
         rollNumber=n;
     }
     void putNumber()
     { 
         System.out.println("Roll No:"+rollNumber);
     }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    package Package2;
    public interface Sports 
    {
     float sportWt=6.0F;
     void putWt();
    }
    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
    import Package1.*;
    import Package2.*;
    class Test extends Student
    {
     float part1, part2;
     void getMarks(float m1,float m2)
     {
         part1=m1;
         part2=m2;
     }
     void putMarks()
     {
         System.out.println("Marks obtained");
         System.out.println("Part 1="+part1);
         System.out.println("Part 2="+part2);
     }
    }
    public class Results extends Test implements Sports
    {
         public void putWt()
         {
             System.out.println("Sports Wt="+sportWt);
         }
         float total;
         void display()
         {
             total=part1+part2+sportWt;
             putNumber();
             putMarks();
             putWt();
             System.out.println("Total score="+total);     
         }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import Package2.*;
    import Package1.*;
    public class Hybrid extends Test
    {
    public static void main(String[]args)
     {
         Results student1=new Results();
         student1.getNumber(1234);
         student1.getMarks(27.5F,33.0F);
         student1.display();
     }
    }
    Quelqu'un saurait-il m'expliquer d'où peut venir le problème ?

    Merci d'avance pour votre aide.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Je dirais qu'une de tes classes n'est pas dans le bon dossier de package.
    Au passage, en java, pas de majuscule dans les noms de package (C'est techniquement possible, mais c'est pas dans les bonnes pratiques), et une seule classe par fichier (Sauf classes internes) : sépare Test et Results.

  3. #3
    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
    Citation Envoyé par Mathieu.J Voir le message
    et une seule classe par fichier (Sauf classes internes) : sépare Test et Results.
    On peut mettre plusieurs classes externes dans le même fichier, c'est juste qu'il ne peut pas y en avoir plus d'une publique. (Parce qu'une classe publique ne peut être que dans un fichier qui porte son nom.)

    De temps en temps, ce n'est pas un mal. (Mais il est, par contre, assez mal de créer une classe publique qui étend une classe non-publique.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut
    j'ai corrigé mon prg,j'ai encore un petit souci
    dans le output
    s'affiche pas valeur de Roll No:
    au lieu de s'afficher Roll No:1234

    il s'affiche seulement:
    Roll No:0
    Marks obtained
    Part1=27.5
    Part2=33.0
    Sports Wt=6.0
    Total score=66.5

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    import package2.*;
    public class Student 
    {
       int rollNumber;
       void getNumber(int n)
       {
        int rollNumber=n;
       }
       void putNumber()
       {
        System.out.println("Roll No:"+rollNumber);
       }
    }
    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
     
    import package1.*;
    package package2;
    interface Sports
    {
     float sportWt=6.0F;
     void putWt();
    }
    class Test extends Student
    {
     float part1,part2;
     void getMarks(float m1, float m2)
     {
      part1=m1;
      part2=m2;
     }
     void putMarks()
     {
      System.out.println("Marks obtained");
      System.out.println("Part1="+part1);
      System.out.println("Part2="+part2);
     }
    }
    class Results extends Test implements  Sports
    {
     float total;
     public void putWt()
     {
      System.out.println("Sports Wt="+sportWt);
     }
     void display()
     {
      total=part1+part2+sportWt;
      putNumber();
      putMarks();
      putWt();
      System.out.println("Total score="+total);
     }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    import package1.*;
    package package2;
    public class Hybrid 
    {
    public static void main(String[]args)
         {
         Results student1=new Results();
         student1.getNumber(1234);
         student1.getMarks(27.5F,33.0F);
         student1.display();
         }
    }

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Alors, encore quelques conventions... En général, les méthodes getX sont faites pour récupérer la valeur de X et setX pour modifier la valeur de X. Le fait d'utiliser des get pour modifer des valeurs n'aide pas à la compréhension de ton programme.

  6. #6
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Convention en premier :
    Méthodes getXXX => renvoyer XXX.
    Méthodes setXXX => assigner la variable passée en paramètre à XXX (ou équivalent).

    Ensuite, c'est normal.

    Dans ta méthode getNumber(int), tu déclares une variables locale masquant la variable de l'objet.
    Ainsi, tu attribues à la variable locale nouvellement créée, qui est détruite à la fin de la méthode, et l'attribut du même nom n'a pas été modifié.

    Enlève le "int" devant la variable et ça ira.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  7. #7
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    C'est sur qu'un getter qui joue le rôle d'un setter c'est assez perturbant.

    Sinon pour ton information, je viens de trouver un PDF listant les conventions habituelles avec Java : ici.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut
    bonjour
    j'ai corrigé comme vs m'avez dit
    pb est présent toujours, maintenant,s'affiche le message suivant
    Exception in thread "main" java.lang.Error: Unresolved compilation problem:
    The method setMarks(float, float) is undefined for the type Results

    at Package2.Hybrid.main(Hybrid.java:9)

    la ligne 9 est:
    student1.setMarks(27.5F,33.0F);
    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
     
    import Package2.*; 
    package Package1.*; 
    public class Student  
    { 
     int rollNumber; 
     public void setNumber(int n) 
     { 
      rollNumber=n; 
     } 
     void putNumber() 
     {  
      System.out.println("Roll No:"+rollNumber); 
     } 
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    import Package1.*; 
    package Package2; 
    public class Hybrid  
    { 
     public static void main(String[]args) 
        { 
        Results student1=new Results(); 
        student1.setNumber(1234); 
        student1.setMarks(27.5F,33.0F); 
        student1.display(); 
        } 
    }
    et encore
    dans le class sports, dans la method display
    dans la phrase suivante putNumber(); est souligné

    merci vos aides

  9. #9
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Poste les autres classes avec le nouveau code.
    Tu as toujours des majuscules dans tes packages.

  10. #10
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Je trouve que l'erreur parle d'elle-même domxaline :
    The method setMarks(float, float) is undefined for the type Results
    Tu appelles donc une méthode setMarks avec cette signature au sein de la classe Results. Cependant cette méthode avec cette signature exacte n'existe pas dans ta classe Results.

    Utilises-tu un IDE comme Eclipse car ça ne laisserait pas passer ce genre d'erreur ?
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut
    j'ai corrigé tous mes erreurs
    en compilant mon erreur j'ai message suivantes
    Exception in thread "main" java.lang.Error: Unresolved compilation problem:

    at Package2.Hybrid.main(Hybrid.java:5)

    la ligne 5 est:
    public static void main(String[]args)

    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
     
    import Package2.*;
    package Package1.*;
    public class Student 
    {
     int rollNumber;
    public void setNumber(int n)
     {
    	 rollNumber=n;
     }
     public void putNumber()
     { 
    	 System.out.println("Roll No:"+rollNumber);
     }
    }
    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
     
    import Package1.*;
    interface Sports 
    {
    	 float sportWt=6.0F;
    	 void putWt();
    	}
    	class Test extends Student
    	{
    	 float part1,part2;
    	 void getMarks(float m1,float m2)
    	 {
    	  part1=m1;
    	  part2=m2;
    	 }
    	 void putMarks()
    	 {
    	  System.out.println("Marks obtained");
    	  System.out.println("Part1="+part1);
    	  System.out.println("Part2="+part2);
    	 }
    	}
    	class Results extends Test implements  Sports
    	{
    	 float total;
    	 public void putWt()
    	 {
    	  System.out.println("Sports Wt="+sportWt);
    	 }
    	 public void display()
    	 {
    	  total=part1+part2+sportWt;
    	  putNumber();
    	  putMarks();
    	  putWt();
    	  System.out.println("Total score="+total);
    	 }
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    import Package1.*;
    //import Package2;
    public class Hybrid 
    {
    	public static void main(String[]args)
        {
        Results student1=new Results();
        student1.setNumber(1234);
        student1.getMarks(27.5F,33.0F);
        student1.display();
        }
    }

  12. #12
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    import Package2.*;
    package Package1.*;
    1- tu dois faire les imports après la déclaration du package.
    2- tu ne peux pas faire un Package1.*. ça doit être un chemin valide.

    A+.

  13. #13
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Points : 2 657
    Points
    2 657
    Par défaut
    TU peux aussi utiliser un IDE comme Eclipse, qui t'aidera plus facilement à trouver tes erreurs.

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut
    j'ai
    Package1
    Student.java
    Package2
    Hybrid.java
    Sports.java

    j'ai écrit mon prg ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    package Package2;
    import Package1.*;
    public class Hybrid 
    {
    	public static void main(String[]args)
        {
        Results student1=new Results();
        student1.setNumber(1234);
        student1.getMarks(27.5F,33.0F);
        student1.display();
        }
    }
    j'ai toujours même message
    Exception in thread "main" java.lang.Error: Unresolved compilation problem:
    at Package2.Hybrid.main(Hybrid.java:5)

    ligne 5 est:
    public static void main(String[]args)

  15. #15
    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
    Citation Envoyé par domxaline Voir le message
    j'ai écrit mon prg ainsi:
    et andry.aime t'a déjà dit ce qui ne va pas.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #16
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par domxaline Voir le message
    j'ai toujours même message
    Tu postes à chaque erreur de compilation sans comprendre le sens de ce que tu fais alors forcément ça passe pas.

    Si tu ne connais pas les conventions d'un programme Java et les erreurs de syntaxe de base, je te conseille déjà de t'orienter vers un tuto/exo qui permettra déjà de défricher une liste d'erreur probable de débutant. Ensuite, je t'encourage à utiliser un IDE qui permettra de défricher le reste des erreurs probables en développement.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut
    ok c'est bon,j'ai corrigé tous ,ça marche
    merci pour vos aides

    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
     
    package Package1;
    import Package2.*;
     
    public class Student 
    {
     int rollNumber;
    public void setNumber(int n)
     {
    	 rollNumber=n;
     }
     public void putNumber()
     { 
    	 System.out.println("Roll No:"+rollNumber);
     }
    }
    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
     
    package Package2;
    import Package1.*;
    interface Sports 
    {
    	 float sportWt=6.0F;
    	 void putWt();
    	}
    	class Test extends Student
    	{
    	 float part1,part2;
    	 void getMarks(float m1,float m2)
    	 {
    	  part1=m1;
    	  part2=m2;
    	 }
    	 void putMarks()
    	 {
    	  System.out.println("Marks obtained");
    	  System.out.println("Part1="+part1);
    	  System.out.println("Part2="+part2);
    	 }
    	}
    	class Results extends Test implements  Sports
    	{
    	 float total;
    	 public void putWt()
    	 {
    	  System.out.println("Sports Wt="+sportWt);
    	 }
    	 public void display()
    	 {
    	  total=part1+part2+sportWt;
    	  putNumber();
    	  putMarks();
    	  putWt();
    	  System.out.println("Total score="+total);
    	 }
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    package Package2;
    import Package1.*;
    public class Hybrid 
    {
    	public static void main(String[]args)
        {
        Results student1=new Results();
        student1.setNumber(1234);
        student1.getMarks(27.5F,33.0F);
        student1.display();
        }
    }
    output
    Roll No:1234
    Marks obtained
    Part1=27.5
    Part2=33.0
    Sports Wt=6.0
    Total score=66.5

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

Discussions similaires

  1. erreur a la compilation ,package does not existe
    Par 304bl dans le forum Général Java
    Réponses: 3
    Dernier message: 12/07/2011, 10h41
  2. Réponses: 1
    Dernier message: 10/05/2006, 12h11
  3. jogl - package does not exist
    Par laurent_ifips dans le forum 3D
    Réponses: 6
    Dernier message: 14/04/2006, 22h59
  4. Réponses: 11
    Dernier message: 08/10/2004, 15h12
  5. [Plugin]package does not match the expected package src
    Par Fladnag dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 10/03/2004, 20h17

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