web-dev-qa-db-fra.com

Le nom du package ne correspond pas au chemin du fichier - IntelliJ

J'essaie d'importer un projet de VCS (enfin, je le fais pour la première fois en fait) et voici la structure de mon projet (importé):

The file structure

BTW. Cet écran est créé après plusieurs tentatives de modification des propriétés de ces répertoires (dans leurs menus contextuels).

Dans ces fichiers sources, j'ai une erreur suivante: 

The error in the editor

Une fois, il n’avait rien contre badugi.client mais il a signalé cette erreur uniquement dans badugi.server. Je ne sais absolument pas comment ça marche ...

De plus, les classes des mêmes répertoires ne se voient pas. 

Error

Il s'agit d'un code de la classe ClientWorker qui se trouve (comme vous pouvez le voir dans la première image) dans le même répertoire que Server. Il doit donc savoir ce que Server est.

Je suis à peu près sûr que ce code a bien fonctionné dans l'IDE de mon ami. Comment configurer IntelliJ pour le faire fonctionner?

42
Radek Kłos

Vous êtes ici pour trouver un service de serveur, cliquez ici pour obtenir un numéro de téléphone, ainsi que pour le prix du serveur.

Zde je způsob, jak to opravit:

  1. Umístěte kurzor na příkaz podtrženého balíčku (package badugi.server)
  2. UdeřilALT+ENTER
  3. Vyberte volbu Přesunout na balíček badugi.server. Pour automaticky opraví strukturu adresáře tak, aby odpovídalo deklarovanému balíčku

nebo

  1. Klepněte pravým tlačítkem myši src v aplikaci Explorateur de projets
  2. Vyberte Nouveau/Paquet a vytvořte balíček badugi
  3. À la recherche d'un serveur pour balayer un livre que je balaie
48
Bohuslav Burghardt

J'ai eu le même problème et je l'ai corrigé en modifiant le fichier .iml de mon projet:

De:

<content url="file://$MODULE_DIR$">
  <sourceFolder url="file://$MODULE_DIR$/src/wrong/entry/here" isTestSource="false" />
  <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
  <excludeFolder url="file://$MODULE_DIR$/target" />
</content>

À:

<content url="file://$MODULE_DIR$">
  <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
  <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
  <excludeFolder url="file://$MODULE_DIR$/target" />
</content>

D'une manière ou d'une autre, un dossier de package est devenu le répertoire source racine lors de l'importation de ce projet.

26
Trann

J'ai aussi vu cette erreur plusieurs fois et j'ai toujours réussi à la résoudre en identifiant correctement les paramètres de module du projet. Dans IntelliJ, cliquez avec le bouton droit sur le projet de niveau supérieur -> "Ouvrir les paramètres du module". Cela devrait ouvrir une fenêtre avec toute la structure du projet et le contenu identifié comme "Dossiers sources", "Dossiers sources de test", etc. Assurez-vous qu'ils sont correctement définis. Pour les "Dossiers sources", assurez-vous que le dossier est votre src/ou src/Java (ou quelle que soit votre langue source), selon le cas

11
syd_barrett

Ajoutez ceci à pom.xml (à l'intérieur de la balise project)

<build>
  <sourceDirectory>src/main/Java</sourceDirectory>
</build>

src/main/Java est le dossier source que vous souhaitez définir. Si vous avez déjà cette ligne dans votre fichier pom.xml, vérifiez si elle est correcte.

6
Searene

Vous devez déclarer dans la structure du projet (Ctrl + Alt + Maj + s) dans la section Module marquer vos dossiers quels sont les paquetages source (le paquet bleu) et ceux qui sont test.

4
Emad Aghayi

J'ai eu les mêmes problèmes en raison de fichiers intellij corrompus ou peut-être obsolètes. Avant la mise à jour vers 14.0.2, mon projet fonctionnait parfaitement avec des paquetages nommément nommés et des hiérarchies de fichiers.

Après la mise à jour, les compilations maven fonctionnaient sans accroc, mais Intellij signalait ladite erreur sur un package spécifique (les autres packages présentant des caractéristiques similaires n'étaient pas affectés).

Je n'ai pas pris la peine d'enquêter davantage, mais J'ai supprimé mes fichiers .iml et mes dossiers .idea, invalidé les caches, redémarré l'EDI et rouvert le projet , en me basant sur la configuration maven.

NOTE: Ceci supprime efficacement les configurations d'exécution et de débogage!

Peut-être que quelqu'un qui comprend les fichiers de l'espace de travail intellij pourrait commenter cela?

Autre commentaire pour ceux qui cherchent plus loin dans cette question: Le refactoring dans SC projets gérés peut laisser de la poussière - il se trouve que j’ai un "ancien" dossier qui contient les répétitions de la structure actuelle du paquet. Si les fichiers .iml ou .idea contiennent des références à ces packages, intellij risque probablement d'être confondu avec les références à d'anciens packages. Bonne chance, chers StackExchangers.

Mise à jour: j'ai supprimé certains fichiers d'un projet maven référencé et le caprice est de retour. Donc, mon message n’est en aucun cas une réponse définitive.

1
blackstrype

Peut-être que quelqu'un rencontre un avertissement similaire que j'ai eu avec un projet Scala.

Les noms de package ne correspondent pas à la structure des répertoires, cela peut poser des problèmes de résolution des classes à partir de ce fichier Inspection des fichiers avec une instruction de package qui ne correspond pas à la structure du package.

Le fichier se trouvait au bon endroit, donc les solutions d'aide fournies par IDE ne sont pas utiles  enter image description here Le fichier de transfert indique que le fichier existe déjà (ce qui est vrai) et Rename Package le déplacerait en fait dans un package incorrect.

Le problème est que si vous avez des objets Scala, vous devez vous assurer que le premier objet du fichier porte le même nom que le nom du fichier. La solution consiste donc à déplacer les objets à l'intérieur du fichier.

0
Alex Grigore

C'est délicat ici. Dans mon cas, la structure du dossier était la suivante:

com/nomApp/rateUS/models/NomFichier.Java

Le nom du paquet que j'avais spécifié dans le fichier FileName.Java était:

package com.appName.rateUs.models;

Notez la différence subtile entre le nom du paquet: il aurait dû être rateUS au lieu de rateU s

J'espère que cela aide quelqu'un!

0
olleh

Je me battais juste avec un problème similaire. Ma façon de le résoudre était de définir le fichier source racine du module Intellij pour qu'il corresponde au dossier racine du projet d'origine. Ensuite, j’avais besoin de marquer certains dossiers comme exclus dans le panneau de navigation du projet (celui qui ne devrait pas être utilisé dans un nouveau projet, pour moi c’était une partie utilisée sous Android). C'est tout.

0
ymko

J'ai créé un paquet sous le dossier src qui a résolu ce problème.

structure du projet

0
杨晨豪

Kotlin

Pour ceux qui utilisent Kotlin et qui respectent les conventions de package docs :

Dans les projets Kotlin purs, la structure de répertoire recommandée consiste à suivre la structure du package en omettant le package racine commun (par exemple, si tout le code du projet se trouve dans le package "org.example.kotlin" et ses sous-packages, les fichiers contenant le fichier "org" .example.kotlin "doit être placé directement sous la racine source et les fichiers de" org.example.kotlin.foo.bar "doivent figurer dans le sous-répertoire" foo/bar "de la racine source).

IntelliJ ne supporte pas encore ceci . La seule chose que vous pouvez faire est de désactiver cet avertissement et d’accepter que le IDE ne vous aide pas à refactoriser lorsqu’il s’agit de changer la structure des dossiers/fichiers.

0
fabriciorissetto