一尘不染

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

hibernate

我试图使用Hibernate将项目“升级”到Java 9,但是在使模块正常运行方面遇到问题。

我的相关部分module-info.java看起来像这样:

module test {

    ...

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

}

和我的POM中的相关依赖项是

  • org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec,2.0.0.Alpha1
  • org.hibernate:hibernate-core,5.2.12。最后
  • javax.transaction:javax.transaction-api,1.2

问题是,如果我运行该程序,则会得到NoClassDefFoundErrorforjavax.transaction.SystemException。我调查了一下,很显然,我的模块缺少requiresonjavax.transaction

因此,我在上添加了模块依赖项javax.transaction-api。然后我继续尝试再次运行该程序-
现在我不见了java.sql.SQLException

这是我遇到的问题:如果我在java.sql包含此类的模块上添加依赖项,则最终会发生冲突:

模块javax.transaction.xajava.sql和读取包javax.transaction.api

java.sqljavax.transaction.api包含不同的软件包,并且有一个共同的(javax.transaction.xa),
但我都需要它们

我该如何处理?有什么简单的我想念的吗?


阅读 259

收藏
2020-06-20

共1个答案

一尘不染

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

Maven的依赖:

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