Hibernate,Java 9和SystemException

前端之家收集整理的这篇文章主要介绍了Hibernate,Java 9和SystemException前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_301_0@

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

  1. Caused by: java.lang.NoClassDefFoundError: javax/transaction/SystemException
  2. at java.base/java.lang.Class.forName0(Native Method)
  3. at java.base/java.lang.Class.forName(Class.java:375)
  4. at org.jboss.logging.Logger$1.run(Logger.java:2554)
  5. at java.base/java.security.AccessController.doPrivileged(Native Method)
  6. at org.jboss.logging.Logger.getMessageLogger(Logger.java:2529)
  7. at org.jboss.logging.Logger.getMessageLogger(Logger.java:2516)
  8. at org.hibernate.internal.HEMLogging.messageLogger(HEMLogging.java:28)
  9. at org.hibernate.internal.HEMLogging.messageLogger(HEMLogging.java:24)
  10. at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.factorybean.createNativeEntityManagerFactory(LocalContainerEntityManagerfactorybean.java:353)
  11. at org.springframework.orm.jpa.AbstractEntityManagerfactorybean.buildNativeEntityManagerFactory(AbstractEntityManagerfactorybean.java:370)
  12. at org.springframework.orm.jpa.AbstractEntityManagerfactorybean.afterPropertiesSet(AbstractEntityManagerfactorybean.java:359)
  13. at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.invokeInitMethods(AbstractAutowireCapablebeanfactory.java:1687)
  14. at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.initializeBean(AbstractAutowireCapablebeanfactory.java:1624)
  15. ... 33 more

有没有人遇到过此异常并知道解决方法?我尝试为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以下内容: –

  1. requires javax.transaction.api;

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

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

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

  1. --add-modules java.transaction

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

猜你在找的Spring相关文章