【发布时间】:2018-03-12 22:01:21
【问题描述】:
我一直在尝试在 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.<clinit>(EntityManagerFactoryBuilderImpl.java:115)
at org.springframework.orm.jpa.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,但它们没有帮助。
上述错误显示在使用 Hibernate 启动 Spring 上下文的 mavan-failsafe (2.20.1) 集成测试中。 应用程序没有任何 Java 9 特定代码。
【问题讨论】:
-
我使用故障保护 2.20.1
-
我对故障安全插件一无所知,但最近对surefire插件进行了更改,将其更改为使用
--add-modules java.se.ee,当试图用组件的 Java EE 版本。为 surefire 插件 (issues.apache.org/jira/browse/SUREFIRE-1424) 跟踪此问题存在问题。 -
@AlanBateman 谢谢,奇怪的是 javax.xml.bind 在 2.20(和 2.19.1)的情况下失败了,尽管我添加了
--add-modules java.xml.bind -
我得到这个工作的唯一方法是阅读艾伦的评论。
-
我在 9+181 上使用 maven 的唯一方法是阅读 Alan 的评论并将 maven surefire 插件从 2.20.1 降级到 2.20,但我仍然需要对 javax.xml 的 maven 依赖。绑定:jaxb-api:2.2.11。顺便说一下,Eclipse (Oxygen 1a) JUnit 插件可以在将 java.se.ee 模块添加到 java 构建路径对话框中显式包含的模块窗格中运行我的测试,该对话框在 JRE 系统中编辑“Is Modular”后打开图书馆 9 树。
标签: java spring hibernate maven java-9