【发布时间】:2018-06-22 23:22:26
【问题描述】:
我尝试将使用 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
问题是,如果我运行程序,我会得到一个NoClassDefFoundError 对应的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 包含此类,我最终会发生冲突:
模块从
java.sql和javax.transaction.api读取包javax.transaction.xa
java.sql 和 javax.transaction.api 包含不同的包,并且有一个共同点 (javax.transaction.xa),但我需要所有这些包。
我该如何处理?我缺少什么简单的东西吗?
【问题讨论】:
-
看起来类似于linked comment 和相关的reply from Alan
-
有一个 JSR 907 的 MR 正在进行中 (jcp.org/en/jsr/detail?id=907) 来解决这个问题。一旦解决了这个问题,我希望 JTA API 工件的新版本能够以正确的模块名称发布,并且只导出 javax.transaction。
标签: java hibernate maven jdbc java-9