Java之道丨Maven项目build时出现No compiler is provided的处理

近日在compile命令编译Maven项目时出现[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?的问题, 到百度查看一下, 遇到这个问题的不在少数, 但是对问题的解释没有说到根源.其实,是jre的指向导致出现了此类问题,因为安装jdk是默认有jre,另外还有一个下载安装的jre。错误和解决方案如下,如有纰漏,敬请谅解!

错误代码节选:

[java] view plain copy

  1. [ERROR] COMPILATION ERROR :

  2. [INFO] -------------------------------------------------------------

  3. [ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

  4. [INFO] 1 error

  5. [INFO] -------------------------------------------------------------

  6. [INFO] ------------------------------------------------------------------------

  7. [INFO] BUILD FAILURE

  8. [INFO] ------------------------------------------------------------------------

  9. [INFO] Total time: 1.436 s

  10. [INFO] Finished at: 2017-06-28T11:16:07+08:00

  11. [INFO] Final Memory: 10M/151M

  12. [INFO] ------------------------------------------------------------------------

  13. [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project manage: Compilation failure

  14. [ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

  15. [ERROR] -> [Help 1]

但是编写普通Java Project编译运行却是正常的,下图为只有输出语句的普通java类

Java之道丨Maven项目build时出现No compiler is provided的处理

从上图中可以看出, java编译环境未jre1.7.0_17, 也就是说并没有配置成jdk目录, 然后看Eclipse-->Window-->preferences-->Java-->Installed JREs

Java之道丨Maven项目build时出现No compiler is provided的处理

为了演示出效果, 在测试之前, 将系统java环境配置成如上图所示路径, 并只保留该配置, 由下图可以看出, 该路径是安装的两个JDK版本中的一个JDK自带的jre运行环境. 使用该环境编译普通项目没有问题, 但为什么会在编译Maven项目时出错呢?

Java之道丨Maven项目build时出现No compiler is provided的处理

我们看看Maven的环境是如何配置的:先找到Eclipse-->Window-->preferences-->Maven-->Installations

Java之道丨Maven项目build时出现No compiler is provided的处理

在Maven配置中, 我并没有使用Eclipse自带的Maven插件, 而是重新配置的Maven环境, 然后再看Eclipse-->Window-->preferences-->Maven-->User Settings

Java之道丨Maven项目build时出现No compiler is provided的处理

Maven设置使用的是Maven中conf文件夹下的settings.xml, 点击"open file" 在Eclipse中查看具体配置信息, 仅摘录与本错误信息相关的部分

[html] view plain copy

  1. jdk-1.7

  2. true

  3. 1.7

  4. 1.7

  5. 1.7

  6. 1.7

根据上面的配置, 我们需要指定一个符合配置的JDK环境, 这是我们之前在Eclipse-->Window-->preferences-->Java-->Installed JREs下的配置就不行了, 而需要指定一个JDK目录, 例如JDK安装目录下的jdk1.7.0_17, 这也是这个错误出现的罪魁祸首. 不过对于Java开发者来说, Installed JREs中使用jdk目录而不适用jre目录也是最好的选择.

Java之道丨Maven项目build时出现No compiler is provided的处理

步骤:

Java之道丨Maven项目build时出现No compiler is provided的处理

Java之道丨Maven项目build时出现No compiler is provided的处理

Java之道丨Maven项目build时出现No compiler is provided的处理

Java之道丨Maven项目build时出现No compiler is provided的处理

Java之道丨Maven项目build时出现No compiler is provided的处理

Java之道丨Maven项目build时出现No compiler is provided的处理

Java之道丨Maven项目build时出现No compiler is provided的处理

然后再编译运行项目即可.


分享到:


相關文章: