我一直在尝试在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.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:54)
at org.springframework.orm.jpa.LocalContainerEntityManagerfactorybean.createNativeEntityManagerFactory(LocalContainerEntityManagerfactorybean.java:353)
at org.springframework.orm.jpa.AbstractEntityManagerfactorybean.buildNativeEntityManagerFactory(AbstractEntityManagerfactorybean.java:370)
at org.springframework.orm.jpa.AbstractEntityManagerfactorybean.afterPropertiesSet(AbstractEntityManagerfactorybean.java:359)
at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.invokeInitMethods(AbstractAutowireCapablebeanfactory.java:1687)
at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.initializeBean(AbstractAutowireCapablebeanfactory.java:1624)
... 33 more
有没有人遇到过此异常并知道解决方法?我尝试为javax.bind或java.se.ee添加–add-modules,但它们没有帮助.
上面的错误显示在mavan-failsafe(2.20.1)集成测试中,它使用Hibernate启动Spring上下文.
应用程序没有任何Java 9特定代码.
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.
原文地址:https://www.jb51.cc/spring/432454.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。