IntelliJ Camel插件构建WAR时RunMojo Java版本不兼容报错
问题根因
先明确类版本和JDK的对应关系:
- 类文件版本55.0对应Java 11,52.0对应Java 8
报错的核心逻辑非常明确:org/apache/camel/maven/RunMojo这个类是用Java 11编译的,但当前执行这个Maven插件的运行环境最高只支持到Java 8。
注意这个问题和业务代码的编译版本、项目配置的SDK版本没有直接关系——这类问题90%以上都是排查错了配置范围:这个报错是Maven执行插件时用的运行时JDK版本不匹配,不是业务代码编译的JDK版本不对。
绝大多数人排查时都会漏这几个配置项,也是这类问题的高发原因:
- IntelliJ中Maven导入、运行插件用的JDK默认选了IDE自带的Java 8运行时,和项目配置的JDK完全独立
- 系统全局
JAVA_HOME环境变量指向JDK 8,IDE调用Maven时默认继承这个环境配置 - 引入的Camel Maven插件版本过高:Camel 3.14之后的正式版本已经将插件编译基线升级到Java 11,不再支持Java 8环境下运行。
解决步骤
按优先级从高到低操作即可:
- 检查IntelliJ的Maven专属JDK配置
打开设置面板,进入Build, Execution, Deployment > Build Tools > Maven页面,分别找到「Importer」标签页下的JDK for importer、「Runner」标签页下的JRE配置项,将这两个配置都改为本地安装的JDK 11及以上版本,不要选择内置的1.8版本或IDE自带运行时。修改完成后应用配置,重新加载Maven项目再尝试构建。 - 校验Maven全局运行时版本
在IDE内置终端执行mvn -v,查看输出内容中的Java version字段,如果显示为1.8,说明系统全局Maven默认使用JDK 8运行,需要将系统JAVA_HOME环境变量修改为JDK 11+的安装路径,重启IDE后再次执行命令验证版本是否生效。 - 如果项目必须基于Java 8部署
直接将POM文件中camel-maven-plugin的版本降到支持Java 8的最后稳定分支,也就是3.14.x及更早版本,修改后重新拉取Maven依赖再执行构建即可。
注意:项目结构中配置的Project SDK、Module SDK、编译级别等参数,仅对业务代码的编译、运行生效,完全不影响Maven插件本身的执行环境,这也是很多人反复核对配置都找不到问题的核心误区。
内容的提问来源于stack exchange,提问作者Lore
相关产品推荐
相关产品推荐

