加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Hibernate,Java 9和SystemException

发布时间:2020-12-15 01:34:27 所属栏目:大数据 来源:网络整理
导读:我一直在尝试在Java 9 / Spring Boot 1.5.x / Maven项目中运行Hibernate 5.2.11应用程序,但是我在缺少类时失败了: Caused by: java.lang.NoClassDefFoundError: javax/transaction/SystemException at java.base/java.lang.Class.forName0(Native Method) a

我一直在尝试在Java 9 / Spring Boot 1.5.x / Maven项目中运行Hibernate 5.2.11应用程序,但是我在缺少类时失败了:

Caused by: java.lang.NoClassDefFoundError: javax/transaction/SystemException
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:375)
    at org.jboss.logging.Logger$1.run(Logger.java:2554)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.jboss.logging.Logger.getMessageLogger(Logger.java:2529)
    at org.jboss.logging.Logger.getMessageLogger(Logger.java:2516)
    at org.hibernate.internal.HEMLogging.messageLogger(HEMLogging.java:28)
    at org.hibernate.internal.HEMLogging.messageLogger(HEMLogging.java:24)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.

有没有人遇到过此异常并知道解决方法?我尝试为javax.bind或java.se.ee添加–add-modules,但它们没有帮助.

上面的错误显示在mavan-failsafe(2.20.1)集成测试中,它使用Hibernate启动Spring上下文.
应用程序没有任何Java 9特定代码.

最佳答案
根据migration guide和java文档,由于导出包javax.transaction的模块java.transaction已被标记为@Deprecated.

理想情况下,您应该将代码迁移到使用javaee/javax.transaction.目前,您可以使用从依赖项转换的自动模块来执行此操作:


并添加到module-info.java以下内容: –

requires javax.transaction.api;

此外,在使用maven-failsafe-plugin时,请确保使用progress document of Maven.中提到的最低兼容版本2.20.1或更高版本


@Deprecated(在OP确认后forRemoval =“)

另一方面,temporary workaround(因为最终将从JDK中删除这些模块)可以使用: –

--add-modules java.transaction

正如评论中所提到的,由于javax.transaction-api所需的依赖关系已经在类路径中可用,因此不应该要求添加任何编译器选项,否则最终会使用java.transaction模块覆盖当前包.导出javax.transaction包,理想情况下,您的用例不包含SystemException.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读