Je suis en train de tester Java 9 avec un projet nécessitant JPA (classes javax.persistence.*
). Lorsque j'ajoute le module-info.java
et déclare mon module, toutes les classes sous le package javax.persistece
deviennent indisponibles.De quel module devrais-je avoir besoin dans Java 9 pour utiliser JPA?
J'ai beaucoup cherché, mais je n'ai pas trouvé le module qui nécessite l'utilisation de JPA dans un projet de module Java 9.
MISE À JOUR Comme Alan a suggéré, je courais
$ jar --describe-module --file=javax.persistence-api-2.2.jar
No module descriptor found. Derived automatic module.
[email protected] automatic
requires java.base mandated
contains javax.persistence
contains javax.persistence.criteria
contains javax.persistence.metamodel
contains javax.persistence.spi
Mais toujours avec cette module-info.java
module my.module {
requires java.persistence;
}
je reçois « module-info.java:[3,18] Module introuvable : java.persistence ".
MISE À JOUR 2 Ceci est ma structure du projet:
.
├── pom.xml
└── src
├── main
│ ├── java
│ │ ├── my
│ │ │ └── module
│ │ │ └── MyBean.java
│ │ └── module-info.java
│ └── resources
└── test
├── java
└── resources
Le pom.xml
a la dépendance javax.persistence-api
.
repo Test: https://github.com/heruan/java9-jpa
'requires' devrait utiliser le nom de fichier pour les modules automatiques:' javax.persistence-api-2.2' mais cela semble bizarre. Je renommerais le pot? –
@JoopEggen Le nommage automatique du module si je ne me trompe pas convertit tout caractère non-alphanumérique en un point ('.'). Donc le nom du module courant finirait par être 'javax.persistence.api' dans ce cas (bien sûr sans numéro de version qui ne soit pas maintenu au niveau du module) – nullpointer