我试图使用Hibernate将项目“升级”到Java 9,但是在使模块正常运行方面遇到问题。
我的相关部分module-info.java看起来像这样:
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
org.hibernate:hibernate-core
javax.transaction:javax.transaction-api
问题是,如果我运行该程序,则会得到NoClassDefFoundErrorforjavax.transaction.SystemException。我调查了一下,很显然,我的模块缺少requiresonjavax.transaction。
NoClassDefFoundError
javax.transaction.SystemException
requires
javax.transaction
因此,我在上添加了模块依赖项javax.transaction-api。然后我继续尝试再次运行该程序- 现在我不见了java.sql.SQLException。
javax.transaction-api
java.sql.SQLException
这是我遇到的问题:如果我在java.sql包含此类的模块上添加依赖项,则最终会发生冲突:
java.sql
模块javax.transaction.xa从java.sql和读取包javax.transaction.api
javax.transaction.xa
javax.transaction.api
java.sql并javax.transaction.api包含不同的软件包,并且有一个共同的(javax.transaction.xa), 但我都需要它们 。
我该如何处理?有什么简单的我想念的吗?
使用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>