JDK10下Jhipster v5.0.0-beta.1项目Maven构建缺失jaxb-api依赖报错
解决Jhipster v5.0.0-beta.1 + JDK 10构建时的JAXB缺失问题
这个错误的核心原因很明确:从JDK 9开始,Java EE相关的模块(包括JAXB)被移出了JDK核心库,而JHipster v5.0.0-beta.1的默认配置还依赖这些模块,所以在JDK 10下编译时会找不到javax.xml.bind.JAXBException类。
下面是具体的修复步骤:
步骤1:添加JAXB相关依赖到pom.xml
在你的项目pom.xml的<dependencies>节点中加入以下依赖,手动引入JAXB所需的类:
<dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-core</artifactId> <version>2.3.0.1</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency>
这些依赖会补全JDK 10中缺失的JAXB相关类,解决NoClassDefFoundError问题。
步骤2:确保Maven编译插件支持JDK 10
检查你的maven-compiler-plugin配置,确保它的版本足够新(至少3.8.0及以上),并且正确指定JDK版本:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>10</source> <target>10</target> <encoding>UTF-8</encoding> </configuration> </plugin>
旧版本的maven-compiler-plugin(比如你当前用的3.7.0)对JDK 10的支持不够完善,升级到3.8.x版本可以避免一些编译兼容性问题。
步骤3:重新执行构建
添加依赖并更新插件配置后,运行以下命令重新构建项目:
mvn clean install
这样应该就能顺利完成JDK 10下的项目构建了。
内容的提问来源于stack exchange,提问作者Rafa
相关产品推荐
相关产品推荐

