Hibernate + Java 9 + javax.transaction.SystemException [英] Hibernate + Java 9 + javax.transaction.SystemException

查看:71
本文介绍了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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆