126 votes

Le paquet déclaré ne correspond pas au paquet attendu ""

J'utilise Eclipse et je n'ai pas utilisé Java depuis un certain temps. Cependant, je peux compiler mon code en ligne de commande sans problème et générer les fichiers nécessaires. .class des dossiers. Dans Eclipse, il se plaint que The declared package "Devices" does not match the expected package "" . Qu'est-ce que cela signifie et comment puis-je le réparer ?

Exemple de code :

package Devices;

public final class DevFrequency 
{
    public short messageID;
    public double frequency;
    public short converterID;
    public DevFrequency() 
    {
    }
    public DevFrequency(short _messageID,double _frequency,short _converterID)
    {
        messageID = _messageID;
        frequency = _frequency;
        converterID = _converterID;
    }
}

Le nom de mon projet est DeviceDDS .

3 votes

Cette classe est-elle dans le /src/Converters répertoire ?

8 votes

Si vous devez modifier votre question rétrospectivement (ce qui semble inutile, pour être honnête), vous devez être cohérent à ce sujet - vous n'avez pas modifié le premier paragraphe de la question. Vous avez également rendu tous les commentaires bizarres. Pourquoi tout changer, près d'un an et demi plus tard ?

0 votes

Dans mon cas (en utilisant l'extension VSCode Java Project Manager), pour certaines raisons, j'ai dû changer manuellement le package de la classe, ou vous pouvez maintenir le pointeur de la souris sur la ligne rouge sous l'erreur et ensuite cliquer sur "quick fix" pour le faire automatiquement. (Bien sûr, je n'ai aucune idée de la façon dont cela s'est produit parce que le VSCode Java Project Manager gère cela lorsque vous créez un nouveau dossier, tout seul et je n'ai pas pu reproduire ce comportement une fois de plus). Quoi qu'il en soit.

174voto

CandiedOrange Points 1287

Essayez de fermer et de rouvrir le fichier.

Il est possible d'obtenir cette erreur dans eclipse alors qu'il n'y a absolument rien d'anormal dans l'emplacement du fichier ou la déclaration du paquet. Essayez cela avant de passer beaucoup de temps à essayer ces autres solutions. Parfois, Eclipse est simplement confus. Cela a fonctionné pour moi à plusieurs reprises. J'attribue l'idée à Joshua Goldberg .

5 votes

J'ai eu ce problème avec un projet Gradle dans VS Code. La réouverture a réglé le problème.

2 votes

L'ouverture et la fermeture du fichier dans l'éditeur d'eclipse ont permis de résoudre le problème. J'avais ajouté un dossier source dans java config build - onglet source, l'erreur n'a pas été supprimée, mais lorsque j'ai fermé et ouvert l'éditeur dans eclipse, cela a aidé :-)

1 votes

Quitter et redémarrer eclipse a également réglé le problème.

66voto

Jon Skeet Points 692016

Eclipse s'attend à ce que le paquetage déclaré corresponde à la hiérarchie des répertoires - il s'attend donc à ce que votre fichier Java se trouve dans un répertoire appelé "Devices" sous votre racine source. Pour le moment, il semble que le fichier se trouve directement dans la racine de votre source. Créez donc le répertoire approprié, et déplacez-y le fichier.

Notez que, par convention, les paquets sont en minuscules et incluent le nom de votre organisation dans l'ordre DNS inverse, par ex.

com.foo.devices;

3 votes

@Sakti : Vous ne pouvez pas, pour autant que je sache, et je vous déconseille fortement de le faire même si vous le pouviez. Tous Les développeurs Java expérimentés s'attendront à ce que vous suiviez les conventions habituelles.

49voto

nanospeck Points 357

Solution 1 : Une solution qui a fonctionné pour moi lorsque cette erreur " Le paquet déclaré ne correspond pas au paquet attendu "est apparu pour un projet que j'ai extrait du CVS d'Eclipse :

1. cliquez avec le bouton droit de la souris sur le projet dans la barre de navigation et cliquez sur "supprimer".
2. assurez-vous que ' Supprimer le contenu du projet sur le disque L'option ' est PAS coché, et cliquez sur OK.
3.maintenant après que le projet soit supprimé, allez à Fichier -> Importation -> Général -> Projets existants dans l'espace de travail
Sélectionnez votre espace de travail dans la liste des répertoires et cochez la case à côté du nom de votre projet. Cliquez sur ' Finition '

Solution 2 : Une fois encore, j'ai obtenu cette erreur avec le message suivant

Erreurs de construction Eclipse - java.lang.Object ne peut être résolu J'ai dû suivre une autre route mentionnée ici et l'erreur a disparu.

Pendant ce temps, la solution consiste à supprimer la bibliothèque système JRE du projet, puis à la réinsérer. Voici les étapes à suivre :

  1. Allez dans les propriétés du projet avec l'erreur de construction (clic droit > Propriétés) Regardez l'onglet "Libraries" dans la section "Build Path" Trouvez la "JRE System Library" dans la liste (si elle est manquante, alors ce message d'erreur n'est pas un bug d'Eclipse mais un projet mal configuré).
  2. Supprimez la "Bibliothèque système JRE".
  3. Cliquez sur "Add Library ...", sélectionnez "JRE System Library" et ajoutez le JRE approprié pour le projet (par exemple, "Workspace default JRE").
  4. Cliquez sur "Terminer" dans la sélection de la bibliothèque et sur "OK" dans les propriétés du projet, puis attendez que le projet soit recompilé.

Espérons que l'erreur sera résolue...

0 votes

J'ai dû faire cela aussi (ajouter un répertoire de tests groovy à la compilation). N'oubliez pas de prendre des notes sur vos configurations d'exécution, que vous devrez recréer. Vous savez pourquoi c'est nécessaire ? Une telle douleur.

11 votes

Une solution plus simple : J'ai été dans cette situation à nouveau, et j'ai pu le faire fonctionner en fermant le projet, en redémarrant Eclipse, et en réouvrant le projet.

12 votes

Encore plus simple ! Je viens de l'avoir à nouveau, et ça a disparu en fermant et en rouvrant l'éditeur du seul fichier problématique.

17voto

dafali Points 161

J'ai résolu le problème en suivant les étapes suivantes :

  1. Sélectionner le projet - Clic droit - java build path.

  2. Dans l'onglet source - vous changez le src à src/main/java .

  3. Eclipse réorganisera tous les projets.

12voto

ayahuasca Points 111

J'ai eu ce problème - les autres classes de mon paquetage étaient correctes, mais une classe présentait une erreur. Il n'y avait rien d'anormal dans la déclaration du paquet.

Je l'ai réparé en faisant refactor->move et déplacé la classe dans un autre paquet temporairement, puis refactor->move dans l'emballage d'origine.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X