在这个环境中没有提供编译器。 也许你正在使用JRE而不是JDK?

我在使用m2eclipse在Eclipse中编译项目。 我在Eclipse中设置JDKpath,如下所示:

Windows-->preferences-->installed jres--> jdk1.7.xx path 

但是这显示错误

 [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.424s [INFO] Finished at: Tue Oct 29 15:21:01 IST 2013 [INFO] Final Memory: 5M/15M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler- plugin:3.1:compile (default-compile) on project TEST-WEB: Compilation failure [ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? 
  1. 在Eclipse IDE上,进入“ 窗口” > “首选项” >“ Java” >“ 已安装的JRE” >并检查已安装的JRE 。 你应该有一个JDK入口。
  2. 如下所示selectExecution Env。 点击OK
  3. 然后右键单击您的项目 – > Maven – > 更新项目

此外,您可能需要更改Maven JRE(请参阅@ jlars62答案),如下所示。 转到运行 – >运行configuration,select我正在运行的Maven Build(从左侧面板)。 然后,我单击JRE选项卡并select了工作区默认JRE选项

在这里输入图像描述

对我来说,这正是日食的抱怨

在这里输入图像描述

所以,我按下Editbutton,改变到JDK文件夹的path,然后清理项目,一切开始工作

对我来说,没有任何工作,直到我改变了我的pom.xml:

 <build> ... <plugins> ... <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <fork>true</fork> <executable>C:\Program Files\Java\jdk1.7.0_45\bin\javac.exe</executable> </configuration> </plugin> </plugins> </build> 

其他说明

我可以看到m2e在JRE中执行,而不是在JDK中执行。 我没有做任何改变,包括将其添加到eclipse.ini:

 -vm C:\Program Files\Java\jdk1.7.0_45\bin\javaw.exe 

最后,我从来没有得到在JDK中执行m2e,但明确地设置Java编译器(如上所述)的伎俩。

  1. 将JAVA_HOME设置为JDK根目录 – 如果您运行命令行或maven(对于此variables,则为google)
  2. 在Java Compiller部分的项目属性中,select所需的JDK – 如果直接从eclipse运行

我在eclipse中试图做一个maven构build时遇到了这个错误。

对我来说,答案是Run – > Run Configurations ,select我正在运行的Maven Build (从左侧面板)。 然后,我单击JRE选项卡并select了Workspace default JRE选项

在我的情况下,这是通过这样做来解决的:

转到“运行时configuration”并将JREconfiguration为JDK。

为您的运行时选择正确的JDK

选择默认的JRE

我复制了答案,以防万一它由于某种原因被删除,但源代码在这里

转到Windows – >首选项 – > Java – >已安装的JRE

可能已经被添加了 在这里输入图像描述

点击添加 – >标准虚拟机 – >下一步 – >目录

并在我的案例path浏览JDK是C:\Program Files\Java\jdk1.8.0_111

然后点击完成。

你会看到这样的窗口 在这里输入图像描述

selectJDK – >应用 – >确定

你完成了。

另外如果jaipster的答案不起作用是去:
窗口>首选项> Java>已安装的JRE

然后编辑jre,使其指向jdk而不是jre(在jre包编辑器中提交的jre home)

这对我有效。

如果从cmd运行Maven命令,请确保在运行该命令之前设置jdkpath。 在我的情况下,我创build了一个.bat文件,其中包含以下内容:

 set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_60 start cmd.exe /k "cd c:\aem_proj\sis\aau" 

我尝试了上述所有,但是,仍然得到相同的错误信息。

在我的情况下,实际的JRE被错误地用作特定于项目的构buildpath中的JRE系统库,这显然覆盖了这里讨论的所有其他设置。

如果是这样的话,请尝试以下方法:

  1. 打开Java Build Path的项目特定库:右键单击“Project> Build Path> Configure Build Path …”并select“Libraries”选项卡。
  2. select“JRE系统库”条目并点击“删除”。
  3. 点击“添加库…”。
  4. popup一个向导。 select“JRE系统库”,然后点击“下一步>”。
  5. 现在select正确的JDK(在我的情况下,“工作区默认JRE”,我使用JDKconfiguration)。
  6. 点击“完成”closures向导。
  7. 点击“确定”closures“属性”对话框。

这个问题还有另外一个可能的答案,我可能是唯一一个愚蠢的人,偶然发现了这个问题,但我认为值得补充,因为没有其他答案适用,因为我已经有了这些设置。

当您安装JDK时,安装程​​序将询问您要安装文件的位置。 默认情况下,在Windows上,这是类似于C:\ Program Files \ Java \ jdk1.8.0_74(或者正在安装的任何版本)。

然后,它会要求您安装JRE的目录,默认情况下类似于C:\ Program Files \ Java \ jre1.8.0_74。

请注意,一个是jdk 1.8.0_74,另一个是jre 1.8.0_74

我正在冲着东西,并且认为安装程序问了两次相同的问题,将我的JDK和JRE安装位置都设置为D:\ devtools \ jdk \ jdk1.8.0_74,导致安装程序用JRE覆盖JDK。 这导致了(除其他外)在我的JDK bin中缺lessjavac.exe,以及在所有我的maven版本中报告的OP相同的错误。

有几个选项可以指定。

步骤:右键在项目浏览器中的项目转到运行 – >运行configuration – >点击Maven Build – >点击你的构buildconfiguration/或创build一个新的configuration。 你会看到下面给出的快照窗口,在那里点击JRE选项卡。

您看到您有3个选项1)工作空间默认JRE 2)执行环境3)替代JRE 在这里输入图像描述 1)工作区默认的JRE是从'窗口'菜单的顶部 – >首选项 – > Java – >已安装的JREs – 在这里你可以添加你的jdk 在这里输入图像描述 2)执行环境jdk可以在@ksnortum中提到的pom.xml中设置

 <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <fork>true</fork> <executable>C:\Program Files\Java\jdk1.7.0_45\bin\javac.exe</executable> </configuration> </plugin> </plugins> 

3)备用JRE可以用来从你的目录中select一个jdk

我遇到了同样的问题,我犯的错误是我添加jrepath只在pathvar,而不是jdkpath。当jdkpath被添加到path,并build立maven项目的工作完美。感谢所有

我有一个解决scheme。

对于这个问题最常见的解决scheme是将jdk位置更改为已安装的JRE而不是JRE位置,但这一次并未解决我的问题。

所以我做了下面的解决这个问题。 展开已安装的JRE选项卡,您将find一个执行环境选项卡。

点击你最喜欢的执行环境。 在我的情况下,它是JAVASE-1.8 。 在那里显示2个选项。 JDK和JRE 。 在那里selectJDK ,问题就解决了。

在这里输入图像描述

我尝试使用mvn clean install构build我的项目应用程序的jar文件时遇到了同样的问题,尽pipe应用程序在从Eclipse运行时工作正常。

这个问题确实太天真了,我没有设置JAVA_HOME环境variables。 我所要做的就是将JAVA_HOME环境variables设置为JDK目录,确保它不是直到“\ bin”而没有分号“;”

在这里输入图像描述

我如何理解它是:

在Eclipse中,应用程序工作正常,因为JRE系统库在JDK文件夹引用JRE,而不是在没有JDK的情况下使用外部JRE文件夹。 [正如其他答案中所解释的那样]

这个configuration不适用于我们在命令提示符下运行的maven命令。 它仍然会查找JAVA_HOMEvariables来访问JRE系统库,如果没有find,它会引用没有JDK的外部JRE文件夹。

我做了以下改变,它为我工作,希望它有助于某人。 在这里输入图像描述

除了上面的回答,我可以说只是尝试从terminal(在Eclipse之外)运行Maven。 通过这种方式,如果它是从外部构build而不是在Eclipse中构build的,则可以理解问题应该在Eclipse中。

尝试这个。

 <build> ... <plugins> ... <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <fork>true</fork> <executable> path to jdk \bin\javac.exe</executable> </configuration> </plugin> </plugins> </build> 

关于这个问题有几个答案,但都与JDK的正确pathconfiguration有关,但是只有JRE,我们才能解决这个问题。

我们只需要使用部署程序集来configurationJava EE项目的打包war文件的path,然后重新运行maven-install。

使用部署程序集的步骤:

  1. 右键单击Jave EE项目 – >单击属性 – >单击部署程序集

  2. 点击添加button – >从文件系统中点击档案 – >点击下一步 – >点击添加 – >转到.m2 \ respository目录并search生成的war文件 – >selectwar文件 – >点击打开button – >点击应用 – >确定

  3. 右键单击该项目 – >单击运行方式下的Maven安装

这将成功地build立你的项目,没有任何编译器错误。

希望这可以解决没有JDK的问题。

你是否缺less任何的Maven构build。

除了上面的JRE changes.I仍然面临类似的问题。我失去了JUnit依赖项后,添加它工作正常。

希望这会有所帮助。