JDK 17 中为何移除了 wsgen 工具?替代方案详解
发布时间 - 2026-01-27 00:00:00 点击率:次jdk 17 已彻底移除 `wsgen` 和 `wsimport` 等 jax-ws 工具,因其所属的 `jdk.xml.ws` 模块随 jep 320 在 java 11 中

自 Java 11 起,Oracle 依据 JEP 320 将包括 java.xml.ws(JAX-WS)、java.xml.bind(JAXB)在内的 9 个 EE 相关模块从 JDK 标准库中正式移除。这意味着:
- wsgen.exe(用于从 Java 类生成 WSDL)和 wsimport.exe(用于从 WSDL 生成客户端 stub)不再随 JDK 17 分发;
- bin/ 目录下确实不再包含这两个可执行文件,即使你同时安装了 JDK 8 —— 这是设计使然,而非安装异常。
✅ 推荐替代方案:使用 jaxws-maven-plugin
该插件由 MojoHaus 维护,功能完整、兼容 JDK 11+,支持 wsgen 和 wsimport 的全部核心能力。在 pom.xml 中添加如下配置即可:
org.codehaus.mojo jaxws-maven-plugin2.6.2 generate-wsdl generate-sources wsgen ${project.build.directory}/generated-sources/wsgen com.example.MyWebService true
⚠️ 注意事项:
- 插件需显式声明依赖 javax.jws:javax.jws-api(API)和 com.sun.xml.ws:jaxws-rt(运行时),尤其在 JDK 17+ 中不可省略;
- 若项目仍需 JAXB 支持(如 WSDL 解析),请额外引入 jakarta.xml.bind:jakarta.xml.bind-api 和 org.glassfish.jaxb:jaxb-runtime;
- 避免混用 JDK 8 的 wsgen 脚本与 JDK 17 编译环境——字节码版本不兼容可能导致 UnsupportedClassVersionError。
? 总结:wsgen 的消失标志着 Java 平台向模块化与轻量化的演进。与其回退至旧版 JDK,不如拥抱标准化构建流程:通过 Maven 插件实现可重复、可迁移的 Web Service 代码生成,既符合 Jakarta EE 规范演进方向,也更利于 CI/CD 集成与长期维护。
# oracle
# java
# go
# 字节
# 工具
# 标准库
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
如何在腾讯云服务器上快速搭建个人网站?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
韩国服务器如何优化跨境访问实现高效连接?
网站制作免费,什么网站能看正片电影?
JavaScript如何实现错误处理_try...catch如何捕获异常?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
如何快速上传自定义模板至建站之星?
浅谈javascript alert和confirm的美化
Android滚轮选择时间控件使用详解
Firefox Developer Edition开发者版本入口
如何用虚拟主机快速搭建网站?详细步骤解析
详解Android——蓝牙技术 带你实现终端间数据传输
公司网站制作价格怎么算,公司办个官网需要多少钱?
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
javascript中的try catch异常捕获机制用法分析
HTML 中如何正确使用模板变量为元素的 name 属性赋值
如何在万网自助建站平台快速创建网站?
iOS UIView常见属性方法小结
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
Laravel中的withCount方法怎么高效统计关联模型数量
如何快速搭建自助建站会员专属系统?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
如何利用DOS批处理实现定时关机操作详解
敲碗10年!Mac系列传将迎来「触控与联网」双革新
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
Laravel如何实现用户注册和登录?(Auth脚手架指南)
Swift中switch语句区间和元组模式匹配
如何快速使用云服务器搭建个人网站?
如何在云服务器上快速搭建个人网站?
iOS中将个别页面强制横屏其他页面竖屏
Swift开发中switch语句值绑定模式
如何在阿里云虚拟主机上快速搭建个人网站?
Python图片处理进阶教程_Pillow滤镜与图像增强
Android利用动画实现背景逐渐变暗
如何快速完成中国万网建站详细流程?
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件
Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
如何用AI帮你把自己的生活经历写成一个有趣的故事?
如何挑选最适合建站的高性能VPS主机?
Python并发异常传播_错误处理解析【教程】
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
Laravel如何处理和验证JSON类型的数据库字段

