升级Jetty与CXF后构建报错:缺少java.net.http依赖求助
CXF 3.6.0 升级后缺失 java.net.http 依赖的解决办法
问题说明
升级Jetty(9.4.30 → 10.0.15)和CXF(3.3.7 → 3.6.0)后,构建代码时触发以下依赖错误:
缺失依赖项:org.apache.cxf.cxf-rt-transports-http 3.6.0 要求‘java.package; java.net.http 0.0.0’但未找到。
当前环境:
- Java 11
- Eclipse 4.23
- JDK合规级别已设置为11
- JAVA_HOME已指向Java 11
解决步骤
1. 锁定Maven编译的Java版本
在项目pom.xml中明确指定编译和目标Java版本为11,避免版本不一致:
<properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties>
同时检查Maven全局配置(settings.xml),确保没有覆盖项目的Java版本设置。
2. 调整CXF依赖配置
CXF 3.6.0对java.net.http模块有依赖,该模块是Java 11自带的,可通过以下方式修复:
- 排除
cxf-rt-transports-http中自动引入的异常依赖,再显式声明JDK模块依赖:
<dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>3.6.0</version> <exclusions> <exclusion> <groupId>java.package</groupId> <artifactId>java.net.http</artifactId> </exclusion> </exclusions> </dependency> <!-- 显式引入Java 11自带的java.net.http模块 --> <dependency> <groupId>java.net.http</groupId> <artifactId>java.net.http</artifactId> <version>11</version> <scope>system</scope> <systemPath>${java.home}/lib/modules/java.net.http.jmod</systemPath> </dependency>
3. 清理Eclipse项目缓存
- 执行
Project > Clean清理项目编译文件 - 删除项目根目录下的
.classpath和.project文件,重新导入项目 - 右键项目 →
Maven > Update Project,刷新依赖配置
4. 验证Maven版本兼容性
确保使用的Maven版本支持Java 11(推荐3.6.0及以上),通过终端执行mvn -v查看版本,若版本过低则升级Maven。
内容的提问来源于stack exchange,提问作者nilesh vadar
相关产品推荐
相关产品推荐

