使用Java HttpClient发起HTTP请求时无法解析HttpResponse$ResponseInfo如何解决
问题原因
- JDK版本不匹配:
java.net.http包下的 HttpClient 是 Java 11 才正式纳入JDK标准库的API,Java 8及更早版本完全不包含该组件;Java 9、10版本中该API属于孵化模块,默认不会加载。 - 项目编译配置错误:即便本地安装了Java 11+版本,如果项目的编译源版本、目标运行版本配置为低于11,也会无法识别相关类定义。
- 开发环境配置不一致:IDE中当前项目的Project SDK、模块SDK配置为Java 10及以下版本,或者Maven/Gradle等构建工具的Java编译版本配置和全局环境不一致,也会触发该类加载错误。
解决方案
- 优先升级JDK版本:将本地开发及运行环境的JDK升级到11或更高的LTS版本(如Java 17、Java 21),升级后无需额外引入依赖即可直接使用
java.net.http下的所有API。 - 若必须使用Java 9/10版本:需在编译和运行启动参数中添加配置启用孵化模块:
注意Java 9/10的HttpClient包名为--add-modules jdk.incubator.httpclientjdk.incubator.http,需要同步修改代码中的import语句适配。 - 修正构建工具配置:
若使用Maven,修改pom.xml中的编译参数:
若使用Gradle,修改build.gradle中的编译配置:<properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties>compileJava { sourceCompatibility = '11' targetCompatibility = '11' } - 修正IDE配置:在IDE的项目设置页,将Project SDK、模块SDK、Java编译目标版本统一设置为11或更高版本,刷新项目后重新编译即可。
内容的提问来源于stack exchange,提问作者MichaPehlivan
相关产品推荐
相关产品推荐

