【发布时间】:2018-03-10 08:40:36
【问题描述】:
我正在使用需要 JPA(javax.persistence.* 类)的项目测试 Java 9。当我添加module-info.java 并声明我的模块时,javax.persistece 包下的所有类都不可用。
我搜索了很多,但找不到在 Java 9 模块项目中使用 JPA 所需的模块。
更新 正如艾伦建议的那样,我跑了
$ jar --describe-module --file=javax.persistence-api-2.2.jar
No module descriptor found. Derived automatic module.
java.persistence@2.2 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] module not found: java.persistence”。
更新 2 这是我的项目结构:
.
├── pom.xml
└── src
├── main
│ ├── java
│ │ ├── my
│ │ │ └── module
│ │ │ └── MyBean.java
│ │ └── module-info.java
│ └── resources
└── test
├── java
└── resources
pom.xml 具有 javax.persistence-api 依赖项。
【问题讨论】:
-
requires应该使用自动模块的文件名:javax.persistence-api-2.2但这看起来很奇怪。我会重命名罐子吗? -
@JoopEggen 如果我没记错的话,自动模块命名会将任何非字母数字字符转换为点(
.)。因此,在这种情况下,当前模块名称最终将是javax.persistence.api(当然没有不在模块级别维护的版本号)
标签: java jpa java-9 module-info