Java9: jigsaw 和 hibernate 5.2.12 不工作

Java 9: jigsaw and hibernate 5.2.12 doesn't work

在我的pom.xml文件中我只有一个依赖:

<dependencies>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.2.12.Final</version>
    </dependency>
</dependencies>

还有一个模块-info.java

module testmodule {
    requires hibernate.jpa;
    requires hibernate.core;
}

但是当我尝试 运行 我的应用程序时,我收到错误:Caused by: java.lang.IllegalArgumentException: jboss.transaction.api.1.2.spec:无效的模块名称:“1”不是 Java 标识符 。有什么想法如何处理吗?

从堆栈跟踪来看,异常不是针对 hibernate-core 模块,而是针对 jboss-transaction-api_1.2_spec 依赖项包含在您的项目中。

直到依赖的版本1.0.1.Final,自动模块名无法从jar文件名中导出。

这已经在 2017 年 10 月发布的 2.0.0.Alpha1 版本中进行了更新,现在有一个 module-info.class 打包在 jar 中以从中获取模块名称。

因此,您最好使用模块名称为 java.transaction2.0.0.Alpha1 版本,如:

<dependency>
    <groupId>org.jboss.spec.javax.transaction</groupId>
    <artifactId>jboss-transaction-api_1.2_spec</artifactId>
    <version>2.0.0.Alpha1</version>
</dependency>

在下面的环境中这样工作:

module testmodule {
    requires java.persistence;
    requires org.hibernate.orm.core;
}

环境:

java -version
openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)

hibernate 版本:5.3.7.Final -> 取决于 javax.persistence-api-2.2
com.fasterxml.jackson.core 人工制品版本:2.9.7
jackson-datatype-hibernate5 版本:2.9.7 弹簧框架版本:5.1.2.RELEASE