JDK 17无wsgen.exe的原因及无它构建Web应用的方法
JDK 17 无 wsgen.exe 的原因及替代构建方案
为什么JDK 17 没有 wsgen.exe?
wsgen 是用于生成 JAX-WS(Java API for XML Web Services)相关构件的工具,从JDK 9开始它就被标记为废弃(deprecated),到JDK 11时,JAX-WS模块被完全从JDK核心库中移除,转为独立第三方库。JDK 17作为后续版本,自然不再包含这类已被移除的工具。
而JDK 1.8属于Java 8系列,当时JAX-WS还是JDK核心组件的一部分,所以bin目录会附带wsgen.exe。
无 wsgen 时的Web应用构建方案
1. 用构建工具集成JAX-WS插件
- Maven:使用
jaxws-maven-plugin插件,在pom.xml中配置后,构建时会自动生成JAX-WS所需构件,无需手动调用wsgen。示例配置:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxws-maven-plugin</artifactId> <version>2.6</version> <executions> <execution> <goals> <goal>wsgen</goal> </goals> <configuration> <sei>com.yourpackage.YourWebService</sei> <genWsdl>true</genWsdl> </configuration> </execution> </executions> </plugin>
执行mvn clean install即可完成自动生成。
- Gradle:引入
jaxws-gradle-plugin,在build.gradle中配置:
plugins { id 'java' id 'com.github.jaxws-gradle-plugin' version '2.0.1' } jaxws { wsgen { sei = 'com.yourpackage.YourWebService' genWsdl = true } }
执行gradle wsgen任务就能生成所需文件。
2. 手动引入独立JAX-WS库
如果不用构建工具,可以下载JAX-WS独立分发包(包含wsgen的替代工具),将相关jar包加入项目依赖,然后使用分发包中的wsgen命令(或通过jar执行)生成构件。
3. 迁移到现代Web服务技术
如果是新项目,建议迁移到RESTful API(基于JAX-RS,即Jakarta RESTful Web Services)这类现代标准,它们在JDK 17及后续版本中支持更完善,无需依赖传统JAX-WS工具链,开发和构建流程更简洁。
内容的提问来源于stack exchange,提问作者vico
相关产品推荐
相关产品推荐

