事件经过
新建项目编写文件后,在cmd窗口使用命令mvn compile进行编译打包,发生报错:No compiler is provided in this environment. Perhaps you are # running on a JRE rather than a JDK。
原因
使用该命令时,所用到的jdk跟Maven实际使用的不一样。我们所用的jdk自然就是cmd控制台中提供的,但Maven所使用的jdk,却是来自安装路径下的mvn.cmd文件,比如博主的在E:\Maven\apache-maven-3.9.0\bin。博主使用命令java -version查看知道自己的jdk是17版本的,这是由于上次在visual studio code中运行java程序的过程中,被迫放弃原先已经安装的java8版本。但是环境变量依旧未改动,因此造成错误。
系统变量:能对所有用户起作用
用户变量:仅对当前用户起作用
因为安装java的时候,设置环境变量,一般会选择让CLASSPATH和PATH去获取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>