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

标签 java hibernate maven jdbc java-9

我尝试将一个使用 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.Final
  • javax.transaction:javax.transaction-api, 1.2

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

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

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

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>

关于Java 9、Hibernate 和 java.sql/javax.transaction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48244184/

相关文章:

java - 为什么 Hibernate 会查询两次?

maven - Sonatype Nexus可以使用maven的本地存储库吗

java - 如何使用布隆过滤器的消息摘要获取 int 类型哈希

java - 通过 Intent 传递 LatLng 的 ArrayList

java - 如何从字符串数组列表中获取特定字符?

java - Spring JPA和Hibernate在调用save方法时不将实体保存到数据库

Hibernate 4 - 未启用 getGenerateKeys() 支持

java - RxJava 在第一个 Completable 之后但在返回下一个单个之前更新数据

java - Spring Boot 隐式使用 Spring IO?

java - 尝试在 Windows 上运行 Maven 时出错