web-dev-qa-db-fra.com

L'import javax.persistence ne peut pas être résolu

Je travaille actuellement sur un projet qui nécessite EntityManager EntityManagerFacotry et Persistence chacun du paquet javax.persistence. Cela semble être pour le service de base de données, mais le code actuel n'est pas très bien documenté. En recherchant sur Google, il semble qu'il devrait y avoir un fichier XML qui accompagne ceci, mais il n'en existe pas non plus. Je suppose que ma question est simplement: comment faire disparaître ces importations non résolues? Dois-je ajouter un autre fichier jar au chemin de génération? Il semble que je ne devrais pas avoir à le faire car il existe depuis 1,5.

Toute aide est grandement appréciée.

20
Matt

hibernate-distribution-3.6.10.Final\lib\jpa: Ajoutez ce fichier pour résoudre le problème. Il est présent dans le dossier lib à l’intérieur du dossier jpa ---> dans le dossier hibernate-jpa-2.0-1.0.1.Final jar

19
Karthik Reddy

Oui, vous aurez probablement besoin d'ajouter un autre bocal ou une dépendance

javax.persistence.* fait partie de l'API Java Persistence ( JPA ). Ce n’est qu’une API, vous pouvez la considérer comme similaire à une interface. Il existe de nombreuses implémentations de JPA et cette réponse donne une très bonne élaboration de chacune d’elles, ainsi que celle à utiliser.

Si votre importation javax.persistence.* ne peut pas être résolue, vous devrez fournir le fichier jar qui implémente JPA. Vous pouvez le faire soit en le téléchargeant manuellement (et en l'ajoutant à votre projet), soit en ajoutant une déclaration à un outil de gestion des dépendances (par exemple, Ivy/Maven/Gradle). Voir ici pour l'implémentation EclipseLink (l'implémentation de référence) sur le référentiel Maven. 

Après cela, vos importations devraient être résolues.

Voir aussi ici pour ce qui concerne JPA. Le code XML auquel vous faites référence pourrait être persistence.xml, comme expliqué à la page 3 du lien.

Cela étant dit, vous pouvez simplement indiquer le mauvais runtime cible

Si je me souviens bien, vous n'avez pas besoin de fournir une implémentation JPA si vous la déployez dans un serveur d'applications JavaEE tel que JBoss. Voir ici "Notez que vous n'en avez généralement pas besoin lorsque vous déployez votre application sur un serveur d'applications Java EE 6 (comme JBoss AS 6, par exemple).". Essayez de changer le runtime cible de votre projet.

Si votre projet local a été configuré pour pointer vers Tomcat alors que votre référentiel distant suppose un serveur JavaEE, cela pourrait être le cas. Voir ici pour la différence entre Tomcat et JBoss.

Edit: J'ai modifié mon projet pour qu'il pointe vers GlassFish au lieu de Tomcat et que javax.persistence.* soit résolu sans aucune dépendance JPA explicite.

17
typoerrpr

Si quelqu'un utilise Maven, vous devez ajouter la dépendance dans le fichier POM.XML. La dernière version de ce post est ci-dessous:

<dependency>
    <groupId>org.hibernate.javax.persistence</groupId>
    <artifactId>hibernate-jpa-2.1-api</artifactId>
    <version>1.0.0.Final</version>
</dependency>
6
Mindsect Team

J'ai rencontré le même problème et me suis rendu compte que, depuis que j'utilise Spring Boot, tout ce que j'avais à faire pour résoudre le problème consistait à ajouter la dépendance suivante:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
2
Dave McLure

Ma solution consistait à sélectionner les profils Maven que j'avais définis dans mon pom.xml dans lesquels j'avais déclaré les dépendances d'hibernation.

CTRL + ALT + P dans Eclipse.

Dans mon projet, je rencontrais ce problème et bien d’autres parce que, dans mon pom, j’avais différents profils pour prendre en charge Glassfish 3, Glassfish 4 et WildFly. La sélection des profils Maven actifs a résolu mon problème.

1
500 Server error

Si vous utilisez gradle avec spring boot et spring JPA, ajoutez la dépendance ci-dessous dans le fichier build.gradle.

dépendances {groupe de compilation: 'org.springframework.boot', nom: 'spring-boot-starter-data-jpa', version: '2.1.3.RELEASE'

}

0
Tarun Jain

Dans les nouveaux pots hibernate, vous pouvez trouver le fichier jpa requis sous "hibernate-search-5.8.0.Final\dist\lib\fournie\hibernate-jpa-2.1-api-1.0.0.Final". Vous devez ajouter ce fichier JAR dans le chemin de génération Java de votre projet. Cela résoudra probablement le problème. 

0
Umesh_Shah

Si vous utilisez Hibernate en tant qu'implémentation JPA et que vous n'utilisez pas Maven/Gradle, le moyen le plus simple consiste à télécharger un ensemble au lieu du fichier jar un par un.

Allez http://hibernate.org/orm/downloads/ et téléchargez la dernière bibliothèque, extrayez le fichier jar du dossier required.

0
GMsoF