(转)关于Maven项目build时出现No compiler is provided in this environment的处理

原文链接https://blog.csdn.net/lslk9898/article/details/73836745

[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.436 s
[INFO] Finished at: 2017-06-28T11:16:07+08:00
[INFO] Final Memory: 10M/151M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project manage: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[ERROR] -> [Help 1]
 

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

 

(转)关于Maven项目build时出现No compiler is provided in this environment的处理

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

(转)关于Maven项目build时出现No compiler is provided in this environment的处理

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

(转)关于Maven项目build时出现No compiler is provided in this environment的处理

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

(转)关于Maven项目build时出现No compiler is provided in this environment的处理

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

(转)关于Maven项目build时出现No compiler is provided in this environment的处理

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

 

 
  1. <profiles>

  2. <!-- profile

  3. | Specifies a set of introductions to the build process, to be activated using one or more of the

  4. | mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/>

  5. | or the command line, profiles have to have an ID that is unique.

  6. |

  7. | An encouraged best practice for profile identification is to use a consistent naming convention

  8. | for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.

  9. | This will make it more intuitive to understand what the set of introduced profiles is attempting

  10. | to accomplish, particularly when you only have a list of profile id's for debug.

  11. |

  12. | This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.-->

  13.  
  14. <profile>

  15. <id>jdk-1.7</id>

  16. <activation>

  17. <activeByDefault>true</activeByDefault>

  18. <jdk>1.7</jdk>

  19. </activation>

  20. <properties>

  21. <maven.compiler.source>1.7</maven.compiler.source>

  22. <maven.compiler.target>1.7</maven.compiler.target>

  23. <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>

  24. </properties>

  25. </profile>

  26. </profiles>


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

 

(转)关于Maven项目build时出现No compiler is provided in this environment的处理

步骤:

(转)关于Maven项目build时出现No compiler is provided in this environment的处理

(转)关于Maven项目build时出现No compiler is provided in this environment的处理

(转)关于Maven项目build时出现No compiler is provided in this environment的处理

(转)关于Maven项目build时出现No compiler is provided in this environment的处理

(转)关于Maven项目build时出现No compiler is provided in this environment的处理

(转)关于Maven项目build时出现No compiler is provided in this environment的处理

(转)关于Maven项目build时出现No compiler is provided in this environment的处理

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