Hibernate + Java 9 + javax.transaction.SystemException [英] Hibernate + Java 9 + javax.transaction.SystemException
问题描述
我有以下相同的问题: Hibernate,Java 9和SystemException
I kind of have the same problem as: Hibernate, Java 9 and SystemException
我可以按照这样的步骤
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>javax.transaction-api</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.3.0.CR1</version>
<exclusions>
<exclusion>
<groupId>org.jboss.spec.javax.transaction</groupId>
<artifactId>jboss-transaction-api_1.2_spec</artifactId>
</exclusion>
</exclusions>
</dependency>
+ 模块信息:
requires javax.transaction.api;
但是该解决方案对我不起作用,因为我仍然遇到错误
But the solution does not work for me because I'm still getting the errors
[ERROR] error: module org.apache.commons.lang3 reads package javax.transaction.xa from both javax.transaction.api and java.sql
然后,四处浏览,我发现1.3版删除了javax.transaction.xa,所以我去:
Then, browsing around I found that version 1.3 has the javax.transaction.xa removed, so I'll go:
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>javax.transaction-api</artifactId>
<version>1.3</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.3.0.CR1</version>
<exclusions>
<exclusion>
<groupId>org.jboss.spec.javax.transaction</groupId>
<artifactId>jboss-transaction-api_1.2_spec</artifactId>
</exclusion>
</exclusions>
</dependency>
-
模块信息:
Module-Info:
requires java.transaction; requires java.persistence; requires java.sql; requires java.naming; requires jboss.logging;
现在,我可以成功构建我的JAR.我将该jar导入另一个项目,然后该项目崩溃,如下所示:
Now I'm able to succesfully build my JAR. I'm importing that jar to a second project and then the project crashes like this:
NoClassDefFoundErrorjavax/transaction/SystemException at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:374) at jboss.logging@3.3.1.Final/org.jboss.logging.Logger$1.run(Logger.java:2554) at java.base/java.security.AccessController.doPrivileged(Native Method) at jboss.logging@3.3.1.Final/org.jboss.logging.Logger.getMessageLogger(Logger.java:2529) at jboss.logging@3.3.1.Final/org.jboss.logging.Logger.getMessageLogger(Logger.java:2516) at org.hibernate.orm.core@5.3.0.CR1/org.hibernate.internal.CoreLogging.messageLogger(CoreLogging.java:28) at org.hibernate.orm.core@5.3.0.CR1/org.hibernate.internal.CoreLogging.messageLogger(CoreLogging.java:24) at org.hibernate.orm.core@5.3.0.CR1/org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.<clinit>(ClassLoaderServiceImpl.java:40) at org.hibernate.orm.core@5.3.0.CR1/org.hibernate.boot.registry.BootstrapServiceRegistryBuilder.build(BootstrapServiceRegistryBuilder.java:218) at org.hibernate.orm.core@5.3.0.CR1/org.hibernate.boot.registry.StandardServiceRegistryBuilder.<init>(StandardServiceRegistryBuilder.java:58) at a.data/com.a.data.hibernate.HibernateServiceLocator.<clinit>(HibernateServiceLocator.java:39) at g.editor/com.g.App.start(App.java:293) Caused by javax.transaction.SystemException at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:374) at jboss.logging@3.3.1.Final/org.jboss.logging.Logger$1.run(Logger.java:2554) at java.base/java.security.AccessController.doPrivileged(Native Method) at jboss.logging@3.3.1.Final/org.jboss.logging.Logger.getMessageLogger(Logger.java:2529) at jboss.logging@3.3.1.Final/org.jboss.logging.Logger.getMessageLogger(Logger.java:2516) at org.hibernate.orm.core@5.3.0.CR1/org.hibernate.internal.CoreLogging.messageLogger(CoreLogging.java:28) at org.hibernate.orm.core@5.3.0.CR1/org.hibernate.internal.CoreLogging.messageLogger(CoreLogging.java:24) at org.hibernate.orm.core@5.3.0.CR1/org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.<clinit>(ClassLoaderServiceImpl.java:40) at org.hibernate.orm.core@5.3.0.CR1/org.hibernate.boot.registry.BootstrapServiceRegistryBuilder.build(BootstrapServiceRegistryBuilder.java:218) at org.hibernate.orm.core@5.3.0.CR1/org.hibernate.boot.registry.StandardServiceRegistryBuilder.<init>(StandardServiceRegistryBuilder.java:58)
我已经尝试: -改为导入java.se.ee -将我的JDK从9.0.1更新到9.0.4 -将我的JDK更新到10.0.0,这使我陷入了Maven的麻烦,所以我离开了那条路线...如有必要,我可以将其收回. -我没有使用故障保护...尽管我尝试了关于添加maven插件:P的StackOverflow答案(是的,我现在愿意尝试逻辑上的东西).
I already tried to: - import java.se.ee instead - update my JDK from 9.0.1 to 9.0.4 - update my JDK to 10.0.0 which got me into problems with maven, so I left that route... I can take it back if necessary. - I'm not using failsafe... though I tried the StackOverflow answer about adding a maven plugin :P (yep at this point I'm willing to try I logical stuff).
有人真的解决了这种情况吗?我的意思是在一个模块中休眠,然后在第二个模块中将其与命名模块一起使用?
Has anybody actually solved this scenario? I mean hibernate in one module and using it in the second one with named modules?
非常感谢您
推荐答案
更新2019/08/05
Update 2019/08/05
库已更新,可以提供更好的支持. 请使用与
Libraries have been updated to allow for better support. Please use the same module-info definitions as
opens xx.xx.xx.entities to org.hibernate.orm.core; requires java.transaction; requires java.xml.bind; requires java.sql; requires java.activation; requires java.persistence;
Maven大大简化了
Maven has been simplified greatly
<plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <annotationProcessorPaths> <annotationProcessorPath> <groupId>org.hibernate</groupId> <artifactId>hibernate-jpamodelgen</artifactId> <version>${maven.hibernate.version}</version> </annotationProcessorPath> <annotationProcessorPath> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </annotationProcessorPath> <path> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.0</version> </path> <path> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> <version>1.3.1</version> </path> <path> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>${mapstruct.version}</version> </path> </annotationProcessorPaths> </configuration> </plugin>
这篇关于Hibernate + Java 9 + javax.transaction.SystemException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!