Maven编译报错:No compiler is provided in this environment. Perhaps you are...

562 阅读1分钟

事件经过

新建项目编写文件后,在cmd窗口使用命令mvn compile进行编译打包,发生报错:No compiler is provided in this environment. Perhaps you are # running on a JRE rather than a JDK

原因

使用该命令时,所用到的jdkMaven实际使用的不一样。我们所用的jdk自然就是cmd控制台中提供的,但Maven所使用的jdk,却是来自安装路径下的mvn.cmd文件,比如博主的在E:\Maven\apache-maven-3.9.0\bin。博主使用命令java -version查看知道自己的jdk是17版本的,这是由于上次在visual studio code中运行java程序的过程中,被迫放弃原先已经安装的java8版本。但是环境变量依旧未改动,因此造成错误。

系统变量:能对所有用户起作用
用户变量:仅对当前用户起作用

因为安装java的时候,设置环境变量,一般会选择让CLASSPATHPATH去获取JAVA_HOME的值,因此如果要安装多个jdk切换版本,只要设置分别设置各自版本的环境变量,再将其赋值给JAVA_HOME即可。

解决办法

博主修改环境变量后成功解决。可以使用java -verbose查看java安装路径,使用cls清除控制台窗口内容。
如果依然出现其他问题导致该bug,可以尝试在pom.xml文件末尾加入这一段:

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <verbose>true</verbose>
                    <fork>true</fork>
                    <!--jdk地址-->
                    <executable>G:/Java/jdk1.8</executable>
                </configuration>
            </plugin>
        </plugins>
   </build>