JHipster5 项目与 Java 10 上的 JPA 静态元模型



我一直在尝试升级我的JHipster 5应用程序以使用Java 10,但我无法让它使用Maven编译和处理JPA静态元模型。

显然maven-compiler-plugin不会触发hibernate-jpamodelgen以生成JPA静态元模型。

为了升级项目,我有:

  • 安装了甲骨文的JDK 10.0.1
  • 把我的绒球换了.xml换成了<java.version>10</java.version>
  • 升级了 maven-compiler-plugin 以添加java.xml.bind模块(因为从 Java 10 开始默认不包含它(,如下所示:

    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>${maven-compiler-plugin.version}</version>
    <configuration>
    <!-- fork is needed so compiler args can be used -->
    <fork>true</fork>
    <compilerArgs>
    <arg>-J--add-modules</arg>
    <arg>-Jjava.xml.bind</arg>
    </compilerArgs>
    <annotationProcessorPaths>
    <path>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct-processor</artifactId>
    <version>${mapstruct.version}</version>
    </path>
    <!-- For JPA static metamodel generation -->
    <path>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-jpamodelgen</artifactId>
    <version>${hibernate.version}</version>
    </path>
    </annotationProcessorPaths>
    </configuration>
    </plugin>
    

有了这个,当我运行./mvnw clean compile时,我遇到编译失败,没有进一步的详细错误消息。

如果我从pom中删除<compilerArgs>标签.xml并运行相同的命令,我会得到:java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

我已按照此处提供的升级说明进行操作

另外,我在GitHub上提供了此示例项目

这是我升级到 Java 10 的提交更改

为了在此处注册解决方案以帮助他人,以下是解决此问题的方法:

事实证明,这是与hibernate-jpamodelgen@5.2.16.Final的一些Java 9兼容性问题。一旦我升级到Hibernate版本5.3.1.Final它又开始编译。

在这个答案之后,我还必须解决 JAXB 依赖关系。

我遇到了同样的问题。使用 Java 10、SpringBoot 2.0.3、Hibernate 5.3.1 。

在Gradle中对我有用的是将javax.xml.bind添加到annotationProcessor中:

annotationProcessor group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.0'
annotationProcessor group: 'org.hibernate', name: 'hibernate-jpamodelgen', version: '5.3.1.Final'

这样,hibernate-jpamodelgen 就不会再抱怨他缺少javax.xml.bind依赖性,因为它和他属于同一个组(注释处理器(

最新更新