maven快速入门番外篇——安装maven项目时报错:No compiler is provided in this environment...

问题描述

我使用eclipse创建了如下一个聚合工程。
在这里插入图片描述
从上图可以看出,我的项目结构是一个父工程与多个子工程。其中,crm-web子工程依赖于crm-service子工程,crm-service子工程又依赖于crm-dao子工程。当我对父工程进行install时,结果就给我报错了,eclipse控制台打印出了如下错误提示信息。
在这里插入图片描述
字面原因解释就是没有提供编译器的环境,可能你想运行的是一个JRE而不是一个JDK?进一步解释就是我需要的是JDK而不是JRE。

出错原因

当我们在下载JDK时,其实同时下载了一套JRE。JDK主要是开发时用的,其中不仅带了编译器(也就是我们用的javac.exe这个东西),还带了执行class文件的运行器(也就是java.exe这个东西)。而JRE中仅仅带了执行class文件的运行器(也就是java.exe这个东西),但是将java源文件编译成class文件必须有javac.exe这个东西。

根本原因是你配置的是JRE,而不是JDK。或者你认为你自己配置正确了,但是所用的软件有自己查找路径的方法,和你的配置有出入。

如果不信的话,你可以按照Window→Preferences→Java→Installed JREs这样的步骤来查看eclipse默认配置的是不是JRE。
在这里插入图片描述
从上图可以看到eclipse默认配置的是JRE,可能大家都很少在eclipse配置过JDK(我是这样的),所以就出现了对父工程进行install时需要依赖的是JDK而不是JRE的错误。

解决办法

第一步,按照Window→Preferences→Java→Installed JREs步骤来进行操作,可以看到eclipse默认配置的是JRE。
在这里插入图片描述
第二步,在以上窗口中点击Add按钮,将我们自己的JDK给配置进去。点击Add按钮后,这时会弹出如下窗口。
在这里插入图片描述
然后,在以上窗口中选择Standard VM,并点击Next按钮,这时会弹出如下窗口。
在这里插入图片描述
接着,点击Directory按钮选择JDK安装目录。
在这里插入图片描述
紧接着,点击Finish按钮,在弹出的窗口中选中我们添加进来的JDK。
在这里插入图片描述
最后,点击OK按钮,即可改变eclipse的配置。

至此,我们就可以重新install父工程了。
在这里插入图片描述
这时你便会发现父工程安装成功了,而且发布到本地仓库中了。
在这里插入图片描述