美文网首页
idea使用maven toolchain编译失败的问题

idea使用maven toolchain编译失败的问题

作者: 捞月亮的阿汤哥 | 来源:发表于2020-09-04 14:21 被阅读0次

    问题描述

    1. 从github上下载了一个项目redis-replicator, 项目用到了maven toolchain,同时代码中用到了java9的module语法
    2. 然后直接使用idea进行编译,编译失败(即使修改项目的jdk版本也不行),错误提示如下


      截屏2020-09-04 上午11.37.51.png
    3. 报错时候的配置:
    • 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>
    

    解决

    1. 修改项目的toolchains.xml, 写入你的jdk1.8和jdk9(jdk9才支持module语法)之后的地址,比如我的配置如下:


      截屏2020-09-04 上午11.39.49.png

      备注: 我是使用brew安装的,同时安装了1.8和11的;另外发行版的vendor信息可以通过java -XshowSettings:properties -version进行查看

    2. 将toolchains.xml拷贝到/.m2/toolchains.xml
      备注: 到这一步,你使用mvn进行编译的话,已经不会报错了,但是idea还是不支持(错误和上面截图一样)
      这个的原理简单来说就是编译了两次,第一次使用jdk9编译,然后使用java_home的jdk进行编译,多版本jdk maven compile说明
      截屏2020-09-04 上午11.45.58.png
    3. 修改项目的jdk版本
      工具栏右上角Project Structure点击进入


      截屏2020-09-04 上午11.48.34.png
    4. 修改pom文件的jdk版本,并重新reload
    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>
    
    1. 然后点击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

    toolchain的编译示意图

    maven toolchain.png

    相关文章

      网友评论

          本文标题:idea使用maven toolchain编译失败的问题

          本文链接:https://www.haomeiwen.com/subject/gnrzsktx.html