此环境中没有提供编译器。也许您在JRE而不是JDK上运行?

我正在使用m2eclipse在Eclipse中编译一个项目。我在Eclipse中设置JDK路径如下:

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?
1530518 次浏览
  1. JAVA_HOME环境变量设置为JDK根文件夹-如果您运行命令行或maven(mvn),则需要。
    • (在谷歌搜索JAVA_HOME以获取更多信息)
  2. 在项目属性部分Java编译器选择所需的JDK-如果你直接从eclipse运行

对我来说,没有什么工作,直到我做了这个改变我的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

最后,我从来没有让m2e在JDK中执行,但是显式设置Java编译器(如上所述)确实奏效了。

  1. 在您的Eclipse IDE上,进入窗口>首选项>Java>安装JRE>并检查您的安装JRE。您应该在那里有一个带有JDK的条目。
  2. 选择执行环境,如下所示。单击好的
  3. 然后在您的项目上右键单击->Maven->更新项目

此外,您可能必须更改Maven JRE(参见@jlars62答案),如下所示。转到运行->运行配置,选择我正在运行的Maven Build(从左侧面板)。然后,我单击JRE选项卡并选择选项Workspace default JRE

在此处输入图片描述

如果jaipster的答案不起作用,另一种选择是转到:
窗口>首选项>Java>安装的JRE

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

这对我很有效。

对我来说这正是Eclipse专家所抱怨的

输入图片描述

所以,我按下Edit按钮并更改JDK文件夹的路径,然后清理项目,一切开始工作

我在尝试从eclipse中进行maven构建时遇到了这个错误。

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

试试这个。

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

我遇到了同样的问题,我犯的错误是我只在path var中添加了jre path,而不是jdk path。当jdk path被添加到path并构建maven项目时,它的工作非常完美。谢谢大家

我做了以下更改,它对我有用。希望它能帮助某人。输入图片描述

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

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

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

注意一个是jdk1.80_74另一个是jre1.80_74

0_74,将JDK和JRE的安装位置都设置为D:\devols\jdk\jdk1.8,导致安装程序用JRE覆盖JDK。这导致(除其他外)我的JDK bin中缺少javac.exe,OP在我所有的maven构建中都报告了相同的错误。

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

转到“运行时配置”并将JRE配置为JDK。

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

选择默认JRE

我复制了答案,以防由于某种原因被删除,但来源是这里

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

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

除了上面的回答,我可以说只是尝试从终端(Eclipse之外)运行Maven。这样,如果它从外部构建而不是在Eclipse中,你可以理解问题应该在Eclipse中。

我尝试了上述所有方法,但仍然收到相同的错误消息。

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

如果您的情况是这样,请尝试以下操作:

  1. 打开JavaBuild Path的特定于项目的库:右键单击“项目>Build Path>配置Build Path…”并选择“库”选项卡。
  2. 选择“JRE系统库”条目并点击“删除”。
  3. 点击“添加库…”。
  4. 弹出一个向导。选择“JRE System Library”并点击“Next>”。
  5. 现在选择正确的JDK(在我的例子中是“Workspace default JRE”,我 使用JDK配置)。
  6. 点击“完成”关闭向导。
  7. 点击“确定”关闭“属性”对话框。

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

可能jre已经添加 输入图片描述

点击添加->标准VM->下一步->目录

并浏览JDK 在我的情况下路径是C:\Program Files\Java\jdk1.8.0_111

然后单击完成。

您将看到这样的窗口输入图片描述

选择JDK->应用->确定

你已经完成了。

有几个选项可以指定。

步骤: 项目资源管理器中的项目 转到运行->运行配置->单击Maven Build->单击您的构建配置/或创建新的配置。 您将在下面看到给定快照的窗口,单击那里的JRE选项卡。

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

<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可用于从您的目录中选择jdk

关于这个问题有几个答案,但都与JDK的正确路径配置有关,但只有JRE才能解决这个问题。

我们只需要利用部署程序集来配置JavaEE项目打包的war文件的路径,然后重新运行maven安装。

使用部署程序集的步骤:

  1. 右键单击Jave EE项目-->单击Properties -->点击部署程序集

  2. 单击添加按钮-->单击文件中的存档 系统-->点击下一个-->点击添加-->转到 . m2\存储库目录并搜索生成的war文件--> 选择war文件-->点击打开按钮-->点击应用-->确定

  3. 右键单击项目-->单击Maven Install下 运行为

这将成功构建您的项目,没有任何编译器错误。

希望这能在没有JDK的情况下解决问题。

我有个解决办法。

这个问题最常见的解决方案是将jdk位置更改为我的安装JRE而不是JRE位置,但这一次并没有解决我的问题。

所以我做了下面的事情来解决这个问题。 展开安装JRE选项卡,你会发现一个执行环境选项卡。

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

在此处输入图片描述

您是否缺少任何maven构建。

除了上述JRE更改。我仍然面临类似的问题。添加后,我缺少JUnit依赖项,它工作正常。

希望这能有所帮助。

我在尝试使用mvn clean install构建项目应用程序的jar文件时遇到了同样的问题,尽管该应用程序在从Eclipse运行时运行良好。

问题是,确实太天真了,我没有设置JAVA_HOME环境变量。我所要做的就是将JAVA_HOME环境变量设置为JDK目录,确保直到"\bin"并且没有分号";"

在此处输入图片描述

我是如何理解的:

该应用程序在Eclipse中运行良好,因为JRE系统库指的是JDK文件夹的JRE里面,而不是没有JDK的外部JRE文件夹。[在其他答案中解释得很好]

此配置不适用于我们在命令提示符下运行的maven命令。它仍然会寻找JAVA_HOME变量来访问JRE系统库,当找不到它时,它会引用不带JDK的外部JRE文件夹。

我在这个问题上浪费了3个小时,直到我设法使它工作。 我在Eclipse终端发出mvn编译命令时出现了这个错误:

此环境中没有提供编译器。也许您在JRE而不是JDK上运行?

所以我在这里读到,我必须创建一个名为JAVA_HOME的新系统变量,并使其指向jdk安装文件夹。

不再支持源选项1.5。使用1.6或更高版本

找不到解决这个问题的方法,所以…

所以解决这一切的方法是安装JavaSE开发工具包8! 我用的是9,如果是最新的,那一定更好…

总之…

  1. 从您的计算机上卸载所有java版本
  2. 从这里安装JDK8: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

  3. 然后定义JAVA_HOME系统环境值-教程在这里: https://docs.oracle.com/cd/E19509-01/820-3208/inst_cli_jdk_javahome_t/

  4. 重新启动Eclipse并享受!(至少我是这么做的)

希望这能让一些可怜的流浪者免受一些麻烦。

对我来说,JRE在JDK路径之前的PATH环境变量中

  1. C:\ProgramData\Oracle\Java\javapath
  2. C:\en v\j dk 1.80_151\bin

所以我删除了1。可能交换它们也会修复它。

在我的情况下,我的系统变量路径有“C:\ProgramData\Oracle\Java\javapath”位置。

在“C:\ProgramData\Oracle\Java\javapath”位置java中,只有javaw存在。所以我得到了同样的错误。

一旦我删除了“C:\ProgramData\Oracle\Java\javapath”文件夹中的所有文件,我的错误就得到了解决。

我有同样的问题,我只是添加JAVA_HOME环境变量

env var

  • 如果您使用的是eclipse,请参阅https://stackoverflow.com/a/21279068/6097074
  • 如果您使用的是intellij,请在添加JAVA_HOME后从项目目录打开命令提示符并运行mvn clean install(不要使用intellij终端)。

当我创建一个新的EC2 ubuntu 16.04实例时,我也遇到了同样的错误,并且已经安装了Java,并且在运行mvn Clean包时,我遇到了这个问题,下面的解决方案为我工作。

如果您正在使用Ubuntu服务器,那么您可以尝试再次安装Java,为此您可以使用此答案如何在Ubuntu上安装JDKLinux

我的答案与Windows环境中的Eclipse有关。

我去了首选项-->Java-->安装了JRE 我在这里没有看到JDK。我只在这里看到了JRE。 所以我添加了JDK,然后取消选中JRE。然后检查JDK。 然后我使用运行配置运行POM文件。选择选项卡JRE并选择选项“Workspace Default…” 以下是图片

在此处输入图片描述

在此处输入图片描述

我去了首选项-->Java-->已安装的JRE我在这里没有看到JDK。我只在这里看到了JRE。所以我添加了JDK。

这里我们必须强制删除JRE而不是取消检查。

问题陈述=此环境中没有提供编译器。也许您在JRE而不是JDK上运行?intellij

解决方案

请像下面这样设置环境变量le来解决问题

变量名:JAVA_HOME

变量值: C:\Program Files\Java\jdk1.80_202

变量名:M2_HOME

变量值: C:\Program Files\apache-maven-3.6.0#文件格式

此外,在“系统变量”中添加Java和maven路径,如下所示:

  1. C:\Program Files\Java\jdk1.8.0_202\bin

  2. C:\Program Files\apache-maven-3.6.0\bin

我尝试了大部分答案,但没有成功。 对我有用的是(在关注https://stackoverflow.com/a/21279068/2408893之后):

  • 右键单击项目->属性
  • 选择Java构建路径
  • 选择JRE系统库
  • 点击编辑
  • 在执行环境中选择一个jdk

在此处输入图片描述

  • 单击完成
  • 构建和运行

虽然问题是关于Eclipse设置的错误,但认为使用IntelliJ和Windows 10设置修复此错误的答案也可能会有所帮助。

1。转到File-->Settings-->Build, Execution, Deployment-->Build Tools-->Maven-->Importing

2。将ImporterJDK设置为JAVA_HOME,如下所示

在此处输入图片描述

此外,JAVA_HOME应在环境变量-->系统变量处设置为JDK路径,并将%JAVA_HOME%\bin添加到路径系统变量

在Windows 7-64位中,存在一个权限问题,阻止安装程序将文件C:\Program Files\Java\jdk1.6.xx\lib\tools.jar解压缩到您的本地。这个jar文件是maven-comiler-plugin版本3. x使用的,而不是通常的javac

解决方案:以管理员身份运行JavaJDK安装程序!并确保tools.jar位于C:\Program Files\Java\jdk1.6.xx\lib\

如果您使用的是m2e maven集成插件,您希望通过Eclipse中的以下步骤看到文件对Eclipse可见:

转到Windows->首选项->Java->已安装的JRE 选择您正在使用的JDK(C:\Program Files\Java\jdk1.6.xx) 按编辑查看包含tools.jar的罐子列表,或者您可以将其添加为添加外部罐子 然后通过以下步骤配置maven运行:

运行->运行配置->填写名称、基本目录和目标。 然后在同一个窗口中移动到JRE选项卡并指向JDK\jdk1.6.xx\

右键单击您的项目并作为maven install运行,然后再次运行您的应用程序。 如果这不起作用,请转到项目的文件夹,直接启动命令行并运行'mvn install'输入图片描述

Linux,做一个docker示例,我一定没有安装JDK只是JRE。在sudo apt install openjdk-8-jdk并在配置文件中设置JAVA_HOME并将JAVA_HOME/bin添加到路径后,它构建了!

对我来说,我已经升级到Big Sur Mac OS,我不得不删除它,然后它工作得很好。

sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin

这是因为它正在寻找JDK并正在创建JRE。

推荐解决方案:

窗口>首选项>Java>已安装的JRE>编辑>单击目录>浏览JDK路径……

这应该工作正常。
它为我工作正常!!

在构建项目时,请确保将jre指向jdk路径。这可以在特定项目的运行配置部分中完成。

请使用Windows

  1. 如果您使用的是intellij,只需添加JAVA_HOME项目目录中的打开命令提示符并运行mvn清洁安装(不要使用intellij终端)。

  2. 设置JAVA_HOME=C:\Program Files\Java\jdk1.80_202