Я тестирую Java 9 с проектом, для которого требуется JPA (javax.persistence.*
классы). Когда я добавляю module-info.java
и объявляю свой модуль, все классы в пакете javax.persistece
становятся недоступными.
Я много искал, но не смог найти модуль, требующий использования JPA в проекте модуля Java 9.
ОБНОВЛЕНИЕ Как предложил Алан, я побежал
$ 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
Но все же с этим module-info.java
module my.module {
requires java.persistence;
}
Я получаю сообщение «module-info.java:[3,18] модуль не найден: java.persistence».
ОБНОВЛЕНИЕ 2 Это структура моего проекта:
.
├── pom.xml
└── src
├── main
│ ├── java
│ │ ├── my
│ │ │ └── module
│ │ │ └── MyBean.java
│ │ └── module-info.java
│ └── resources
└── test
├── java
└── resources
pom.xml
имеет зависимость javax.persistence-api
.
Тестовый репозиторий: https://github.com/heruan/java9-jpa
requires
следует использовать имя файла для автоматических модулей:javax.persistence-api-2.2
но это выглядит странно. Я бы переименовал банку? - person Joop Eggen   schedule 28.09.2017.
). Таким образом, в этом случае текущее имя модуля будетjavax.persistence.api
(конечно, без номера версии, который не поддерживается на уровне модуля) - person Naman   schedule 28.09.2017