问题描述
- 从github上下载了一个项目redis-replicator, 项目用到了maven toolchain,同时代码中用到了java9的module语法
-
然后直接使用idea进行编译,编译失败(即使修改项目的jdk版本也不行),错误提示如下
截屏2020-09-04 上午11.37.51.png - 报错时候的配置:
- JAVA_HOME使用的是jdk1.8
- 没配置toolchains.xml
- pom.xml文件配置
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
解决
-
修改项目的toolchains.xml, 写入你的jdk1.8和jdk9(jdk9才支持module语法)之后的地址,比如我的配置如下:
截屏2020-09-04 上午11.39.49.png
备注: 我是使用brew安装的,同时安装了1.8和11的;另外发行版的vendor信息可以通过java -XshowSettings:properties -version进行查看
- 将toolchains.xml拷贝到/.m2/toolchains.xml
备注: 到这一步,你使用mvn进行编译的话,已经不会报错了,但是idea还是不支持(错误和上面截图一样)
这个的原理简单来说就是编译了两次,第一次使用jdk9编译,然后使用java_home的jdk进行编译,多版本jdk maven compile说明
截屏2020-09-04 上午11.45.58.png -
修改项目的jdk版本
工具栏右上角Project Structure点击进入
截屏2020-09-04 上午11.48.34.png - 修改pom文件的jdk版本,并重新reload
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
- 然后点击idea右上角的build🔨按钮就可以成功了
注意点 ⚠️
因为JAVA_HOME使用的是jdk1.8的,这样改了之后如果要使用maven编译打包的话,还是要把maven.compiler.source的版本和maven.compiler.target的版本改成JAVA_HOME的jdk版本,比如我的是1.8,不然build还是会报错
截屏2020-09-04 下午1.52.10.png
网友评论