【问题标题】:Java 9: jigsaw and hibernate 5.2.12 doesn't workJava 9:拼图和休眠 5.2.12 不起作用
【发布时间】:2017-12-14 20:44:21
【问题描述】:

在我的 pom.xml 文件中,我只有一个依赖项:

<dependencies>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.2.12.Final</version>
    </dependency>
</dependencies>

还有一个module-info.java

module testmodule {
    requires hibernate.jpa;
    requires hibernate.core;
}

但是当我尝试运行我的应用程序时出现错误:Caused by: java.lang.IllegalArgumentException: jboss.transaction.api.1.2.spec: Invalid module name: '1' is not a Java 标识符。有什么想法如何处理它?

【问题讨论】:

  • requires hibernate.jpa; 的依赖关系是什么?问题详细信息似乎不完整,您是否在依赖项和模块信息中也有jboss.transaction.api.1.2.spec
  • @nullpointer jboss.transaction.api.1.2.spec 是来自 hibernate-core 的传递依赖...

标签: java hibernate jta java-9 java-platform-module-system


【解决方案1】:

从堆栈跟踪中,异常不是针对 hibernate-core 模块,而是针对 jboss-transaction-api_1.2_spec 依赖项包含在您的项目中。

在依赖版本1.0.1.Final之前,无法从jar文件名中导出自动模块名称。

这已在 2017 年 10 月的 2.0.0.Alpha1 版本中进行了更新,现在在 jar 中打包了一个 module-info.class 以从中获取模块名称。

因此,您最好使用模块名称为java.transaction2.0.0.Alpha1 版本:

<dependency>
    <groupId>org.jboss.spec.javax.transaction</groupId>
    <artifactId>jboss-transaction-api_1.2_spec</artifactId>
    <version>2.0.0.Alpha1</version>
</dependency>

【讨论】:

  • 谢谢,它可以工作,我希望 hibernate 可以在 jboss-transaction-api_1.2_spec 版本 2.0.0.Alpha1 上正常工作
  • 我现在得到了这样的issue,有什么想法吗?
【解决方案2】:

下面的环境是这样工作的:

module testmodule {
    requires java.persistence;
    requires org.hibernate.orm.core;
}

环境:

java -version
openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)

休眠版本:5.3.7.Final -> 依赖于 javax.persistence-api-2.2
com.fasterxml.jackson.core 人工制品版本:2.9.7
jackson-datatype-hibernate5 版本:2.9.7 springframework 版本:5.1.2.RELEASE

【讨论】:

    猜你喜欢
    • 2018-03-12
    • 1970-01-01
    • 2018-06-22
    • 2018-09-10
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    • 2015-10-28
    相关资源
    最近更新 更多