IntelliJ用JDK11编译插件JAR而非JDK8,报JRE版本兼容错误求解决
问题与解决方案
问题描述
编译时触发错误:
org/apache/cxf/tools/wsdlto/WSDLToJava has been compiled by a more recent version of the Java Runtime
IntelliJ始终使用JDK 11而非JDK 8编译插件JAR文件,已完成以下配置仍未解决:项目结构指定JDK 8、Gradle JVM配置为JDK 8、Java编译器目标版本设为1.8、系统JAVA_HOME指向JDK 8;尝试更换旧版JBR会导致IDE无法启动。
相关版本:IntelliJ 2022.3.1、Gradle Wrapper 3.0、JDK 1.8
排查与解决建议
- 强制Gradle绑定JDK 8
在项目根目录的gradle.properties文件中添加配置(替换为你的JDK 8实际路径):
org.gradle.java.home=C:/Program Files/Java/jdk1.8.0_xxx
检查模块级SDK配置
进入File > Project Structure > Modules,逐个确认所有模块的SDK选项都选中JDK 8,避免个别模块继承了错误的JDK配置。为Gradle编译任务指定JDK
在build.gradle中为编译任务强制指定JDK 8路径:
tasks.withType(JavaCompile) { options.fork = true options.forkOptions.javaHome = file("C:/Program Files/Java/jdk1.8.0_xxx") }
如果是CXF的WSDL2Java任务引发的问题,单独配置该任务:
wsdl2java { fork = true javaHome = file("C:/Program Files/Java/jdk1.8.0_xxx") }
清除缓存并重启
- 执行
File > Invalidate Caches...,选择Invalidate and Restart清除IntelliJ缓存 - 删除项目根目录下的
.gradle和build文件夹,重新执行Gradle构建
- 执行
调整系统PATH优先级
修改Windows的PATH环境变量,将JDK 8的bin路径移至JDK 11路径之前,确保系统优先调用JDK 8的工具链。核对CXF版本兼容性
检查项目依赖的CXF版本,部分新版本CXF默认用高版本JDK编译,尝试降级到适配JDK 8的版本(比如3.3.x系列)。
内容的提问来源于stack exchange,提问作者Someone
相关产品推荐
相关产品推荐

