使用no.nils.wsdl2java插件时JDK8与JDK11构建失败的解决求助
解决方案
先明确两个报错的核心原因:
- JDK8构建失败:
no.nils.wsdl2java:0.10依赖的CXF工具类是用JDK11编译的(class文件版本55.0),而JDK8仅支持到52.0,版本不兼容。 - JDK11构建失败:JDK11移除了JAXB模块,插件依赖的
javax.xml.bind类需要手动引入相关依赖。
你可以根据项目需求选择以下任一方案:
方案1:继续用JDK8构建
将插件版本替换为支持JDK8的0.9(该版本依赖的CXF工具兼容JDK8),修改后的插件配置如下:
plugins { id 'org.springframework.boot' version '2.3.4.RELEASE' id 'io.spring.dependency-management' version '1.0.12.RELEASE' id 'java' id "no.nils.wsdl2java" version "0.9" // 替换为0.9版本 }
修改完成后用JDK8重新构建即可,无需其他改动。
方案2:切换到JDK11构建
保留插件版本0.10,但在dependencies中添加JAXB相关依赖(插件会通过jaxb配置加载这些类):
dependencies { // 原有依赖保持不变,新增以下JAXB依赖 jaxb 'javax.xml.bind:jaxb-api:2.3.1' jaxb 'com.sun.xml.bind:jaxb-core:2.3.0.1' jaxb 'com.sun.xml.bind:jaxb-impl:2.3.3' jaxb 'javax.activation:activation:1.1.1' }
同时可以将sourceCompatibility改为11,保持与构建JDK版本一致:
sourceCompatibility = '11'
修改后用JDK11重新构建即可解决JAXBException加载失败的问题。
内容的提问来源于stack exchange,提问作者LordCommander
相关产品推荐
相关产品推荐

