Java 11中jdk.incubator.httpclient模块缺失的编译报错问题咨询
解决Java 11 EA编译时找不到jdk.incubator.httpclient模块的问题
这个问题我之前帮同事排查过,核心原因很简单:jdk.incubator.httpclient这个孵化器模块在Java 11版本里已经完成“转正”,正式成为Java标准库的一部分了,模块名也改成了java.net.http,原来的孵化器模块名自然就不存在了。
具体原因解释
Java 9时期,HTTP/2客户端功能还处于孵化器阶段,所以需要通过--add-modules jdk.incubator.httpclient参数手动引入;但到了Java 11,这个功能已经成熟,被移入标准模块java.net.http,并且是默认会被加载的系统模块,不需要再手动添加。
分步解决方案
- 修改代码导入路径:把所有代码里的
import jdk.incubator.http.*;替换成import java.net.http.*; - 移除VM参数:编译和运行时删掉
--add-modules jdk.incubator.httpclient这个参数,现在不需要手动引入该模块 - 更新构建配置(如果用Maven/Gradle):
- 如果是Maven,检查
pom.xml里的模块依赖或编译参数,把涉及jdk.incubator.httpclient的配置替换为java.net.http - 如果是Gradle,同样更新
build.gradle里的模块声明或编译选项
- 如果是Maven,检查
验证方法
你可以在Java 11环境下执行以下命令,确认标准模块的存在:
java --list-modules | grep java.net.http
执行后会输出类似java.net.http@11-ea+11的结果,说明模块已存在。
内容的提问来源于stack exchange,提问作者Naman
相关产品推荐
相关产品推荐

