关于Maven项目build时出现No compiler is provided in this environment的处理[通俗易懂]

关于Maven项目build时出现No compiler is provided in this environment的处理[通俗易懂]近日有同事遇到在编译Maven项目时出现[ERROR]Nocompilerisprovidedinthisenvironment.PerhapsyouarerunningonaJREratherthanaJDK?的问题,原以为这是个个例,源于同事粗心,配置环境出问题造成,后到百度查看一下,遇到这个问题的不在少数,但是对问题的解释没有说到根源,

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定
近日有同事遇到在编译Maven项目时出现

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

的问题, 原以为这是个个例, 源于同事粗心, 配置环境出问题造成, 后到百度查看一下, 遇到这个问题的不在少数, 但是对问题的解释没有说到根源, 于是写下这篇博客供大家参阅, 如有纰漏, 还请指正.

错误代码节选:

[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]

Jetbrains全家桶1年46,售后保障稳定

但是编写普通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中查看具体配置信息, 仅摘录与本错误信息相关的部分

  <profiles>
    <!-- profile
     | Specifies a set of introductions to the build process, to be activated using one or more of the
     | mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/>
     | or the command line, profiles have to have an ID that is unique.
     |
     | An encouraged best practice for profile identification is to use a consistent naming convention
     | for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.
     | This will make it more intuitive to understand what the set of introduced profiles is attempting
     | to accomplish, particularly when you only have a list of profile id's for debug.
     |
     | This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.-->
    
    <profile>
    	<id>jdk-1.7</id>
    	<activation>
    		<activeByDefault>true</activeByDefault>
    		<jdk>1.7</jdk>
    	</activation>
    	<properties>
			<maven.compiler.source>1.7</maven.compiler.source>
			<maven.compiler.target>1.7</maven.compiler.target>
			<maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
		</properties>
    </profile>
  </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的处理[通俗易懂]

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198619.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python动态心形代码简单_python 心形

    python动态心形代码简单_python 心形0.最终效果1.绘制一条心形曲线最近看到个视频,打算绘制个心型动态的曲线。1.1Matlab确定图像及其函数网上有很多关于心形曲线的资料,各种各样的形状,但是我比较倾心于桃心形。先在Matlab里简单看一下是什么样的。桃心形曲线的方程如下x=16sin^3(t)y=13cos(t)-5cos(2t)-2cos(3t)-cos(4t)Matlab绘制效果如下:Matlab程序如下。clcc…

    2022年9月25日
    0
  • WinForm 界面美化

    WinForm 界面美化主界面的扁平化更改winform自带的MainForm窗体属性将主窗体FormBorderStyle更改为None,这样就得到了一个无边框的窗体调节背景色,找到自己喜欢的颜色,输入到BackColor属性中在主窗体的Mouse_Down中添加如下事件,实现窗体随意拖动:[DllImport(“user32.dll”)]publicstaticexternboolReleaseCapture();[DllImport(“user32.dll”)]publicstatic

    2022年5月8日
    55
  • maven配置阿里云仓库[通俗易懂]

    maven配置阿里云仓库[通俗易懂]方式一:全局配置可以添加阿里云的镜像到maven的setting.xml配置中,这样就不需要每次在pom中,添加镜像仓库的配置,在mirrors节点下面添加子节点:<mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Ne…

    2022年4月20日
    842
  • 怎么查看idea的激活码【2021.8最新】

    (怎么查看idea的激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月26日
    54
  • linux 解压rar密码,linux下rar包的压缩与解压方案

    linux 解压rar密码,linux下rar包的压缩与解压方案方法一:yuminstallunrar方法二:下载地址:以最新的为准。对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它们:1:对于.ziplinux下提供了zip和unzip程序,zip是压缩程序,unzip是解压程序。它们的参数选项很多,这里只做简单介绍,举例说明一下其用法:#zipall.zip*.jpg(这条命令是将所有.jpg的文件压缩成一个z…

    2022年7月11日
    30
  • c#程序中的AssemblyInfo.cs

    c#程序中的AssemblyInfo.cs在asp.net中有一个配置文件AssemblyInfo.cs主要用来设定生成的有关程序集的常规信息dll文件的一些参数,下面是默认的AssemblyInfo.cs文件的内容具体介绍//是否符合公共语言规范(CLS)[assembly:CLSCompliant(true)]//控制程序集中所有类型对COM的可访问性[assembly:ComVisible(false)]//代码的作者和这…

    2022年7月13日
    15

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号