web-dev-qa-db-fra.com

Fichier de classe non trouvé dans IntelliJ

Dans IntelliJ, j'obtiens cette erreur étrange lorsque j'essaie de compiler.

Cannot find annotation method 'cascade()' in type 'javax.persistence.ManyToOne': class file for javax.persistence.ManyToOne not found

Je sais que le problème est assez évident, mais après avoir passé trop de temps sur ce problème, je vous fais maintenant confiance!

J'utilise ideaCommunity-9, où j'ai créé une bibliothèque globale pour JBoss, qui contient tous les fichiers JB, y compris ejb3-persistence.jar. Mon module inclut cette bibliothèque et je l’ai déplacée au sommet des dépendances. N’importe où ailleurs dans classpath, j’ai une classe javax.persistence.ManyToOne, et elle s’ouvre également sans problème dans IntelliJ.
Si j'ouvre le fichier contenant l'erreur de compilation, IntelliJ ne montre aucun problème et navigue également vers le fichier de classe en appuyant sur Ctrl + B.
Le code est également construit avec ant et fonctionne ici très bien.

Outre l'erreur ci-dessus, six autres personnes suivent le même chemin (nom dans le tableau, etc.) - toutes liées à JPA. Je reçois également un message disant: "S'il vous plaît, signalez un bogue à JDC yada yada yada."

18
homaxto

Essayez de cocher la case "exporter" dans vos dépendances.

Je veux dire: menu "Fichier" -> Structure du projet -> Modules -> Dépendances, et vous pouvez voir les bibliothèques incluses dans le module. Vous devriez également voir une case à cocher près de chaque bibliothèque dans la colonne "Exporter".

32
Roman

Je viens de le recevoir moi-même, mais ce n’est pas mon problème. J'ai téléchargé un projet de github, puis ouvert dans intelli J avec le problème après avoir essayé d'exécuter un test Junit.

Solution: Structure de projet -> Modules -> 'Nom du projet' -> Sources (onglet) -> Cliquez sur le dossier src -> Marquer comme: Sources

Cela devrait mettre en surbrillance src en bleu et tous les fichiers de classe devraient être les cercles avec C au lieu de ressembler à des fichiers normaux. Essayez d'exécuter à nouveau un test et voyez si cela réussit.

9
plosco

Je suis sûr qu'il est trop tard pour répondre, mais j'ai dû suivre une approche différente pour résoudre cette erreur. 

Je devais créer ceci en tant que bibliothèque globale et ajouter cette bibliothèque au module, alors seule l'erreur serait résolue. 

Add this as a global library

Then add that library as dependency to the project

2
Buddha

N'est-ce pas semblable à cette SO question ?

La solution consistait à ajouter tous les fichiers JBoss (ce que vous avez fait), mais également toutes les bibliothèques associées à la persistance (comme Hibernate).

Voir ceci Configuration du projet JBoss par exemple:

alt text http://jdick.co.uk/blog/wp-content/uploads/2008/12/projectstructure1.jpg

En bref, ejb3-persistence.jar pourrait ne pas être le problème ici, mais simplement un symptôme de other éléments manquants.
Ou, si le problème se pose, le problème est peut-être lié au fait qu'il n'est pas déployé correctement (pour le WebApp configuration ).

1
VonC

eu un problème similaire ("ne peut pas trouver le printemps de classe ... DefaultResourceLoader bien qu'il était dans mes dépendances maven) et aucune quantité de modification de caches revalidantes ne semblait aider. Épuiser mon chemin $ HOME/.Idea * et (en gros) ça partait de zéro, du moins pour le moment ...

0
rogerdpack

Voici une idée: Peut-être avez-vous plusieurs versions de votre fichier jar. Recherchez le fichier ejb3-persistence.jar, Dans votre hiérarchie de dossiers à l'aide d'un outil de gestion de fichiers tel que Total Commander. ____.] Plusieurs apparences du fichier dans votre chemin de classe peuvent confondre IntelliJ Idea Avec le fait de ne pas reconnaître la classe appropriée dans le fichier .jar approprié.

0
Yuval F

En intelliJ j'ai eu ce problème quand j'ai construit (ctrl + shift + F9) au niveau du fichier.

La raison en est que des modifications ont été apportées à d’autres fichiers du même projet maven, qui n’ont pas été sélectionnées.

Je l'ai résolu en construisant au niveau du projet (Sélectionnez le projet Maven dans intellij et appuyez sur ctrl + Maj + F9)

0
developer747

Je recevais le message d'erreur class not found lorsque j'essayais d'exécuter une classe de test .groovy, qui faisait référence à un fichier .groovy (situé à la racine du répertoire source d'un sous-module - c'est-à-dire, aucun package).

Déplacer le fichier source .groovy dans un paquet a résolu le problème pour moi.

Bouge toi:

src/main/groovy/RunMe.groovy

à

src/main/groovy/somePackage/RunMe.groovy
0
Nick Grealy