Java 9、Hibernate与java.sql/javax.transaction

Java 9, Hibernate and java.sql/javax.transaction

我已经尝试 "upgrade" 一个使用 Hibernate 的项目到 Java 9,但是我在让模块正常运行时遇到了问题。

我的 module-info.java 的相关部分如下所示:

module test {

    ...

    requires java.base;
    requires hibernate.core;
    requires javax.transaction;
    requires java.sql;

}

我的 POM 中的相关依赖项是

问题是,如果我 运行 程序,我会得到一个 NoClassDefFoundError for javax.transaction.SystemException。我调查了一下,很明显,my module is missing a requires on javax.transaction.

所以我在 javax.transaction-api 上添加了一个模块依赖。然后我继续尝试再次 运行 该程序 - 现在我丢失了 java.sql.SQLException.

这是我遇到的问题:如果我 add a dependency on the module java.sql,其中包含这个 class,我最终会遇到冲突:

module reads package javax.transaction.xa from both java.sql and javax.transaction.api

java.sqljavax.transaction.api包含不同的包,并且有一个共同点(javax.transaction.xa),但我需要所有包

我该如何处理?我缺少一些简单的东西吗?

使用版本 1.3 而不是 javax.transaction-api 的 1.2,在此版本中 javax.transaction.xa 已被删除。

Maven 依赖项:

<dependency>
    <groupId>javax.transaction</groupId>
    <artifactId>javax.transaction-api</artifactId>
    <version>1.3</version>
</dependency>