此环境中未提供编译器。也许您运行的是JRE而不是JDK?

问题描述 投票:540回答:30

我正在使用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?
java eclipse maven java-7 m2eclipse
30个回答
867
投票
  1. 在Eclipse IDE上,进入Window> Preferences> Java> Installed JREs>并检查已安装的JRE。你应该有一个JDK条目。
  2. 选择执行环境,如下所示。单击确定
  3. 然后右键单击您的项目 - > Maven - >更新项目

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

enter image description here


9
投票

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

env var

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

8
投票

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

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

7
投票

我在尝试使用mvn clean install构建项目应用程序的jar文件时面临同样的问题,尽管应用程序在从Eclipse运行时工作正常。

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

enter image description here

我的理解如下:

该应用程序在Eclipse中运行良好,因为JRE系统库引用了JDK文件夹中的JRE而不是没有JDK的外部JRE文件夹。 [正如其他答案所解释的那样]

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


6
投票

有几个选项可供指定。

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

你看到你有3个选项1)工作区默认JRE 2)执行环境3)备用JRE enter image description here 1)工作区默认JRE从顶部的'Window'菜单设置 - > Preferences - > Java - > Installed JREs - 你可以添加你的jdk enter image description here 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


4
投票

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

  1. C:\ ProgramData \ ORACLE \的Java \ javapath
  2. C:\ ENV \ jdk1.8.0_151 \ BIN

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


4
投票

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

我去了Preferences - > Java - > Installed JREs我没有在这里看到JDK。我这里只看到了JRE。所以我添加了JDK,然后取消选中了JRE。然后检查JDK。然后我使用Run Configurations运行POM文件。选择选项卡JRE并选择“工作区默认...”选项以下是图像

enter image description here

enter image description here


3
投票

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

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

然后它会要求您提供一个安装JRE的目录,默认情况下是C:\ Program Files \ Java \ jre1.8.0_74。

注意,一个是jdk1.8.0_74,另一个是jre1.8.0_74

我急于求成,并且认为安装程序两次问我同样的问题,将我的JDK和JRE安装位置设置为D:\ devtools \ jdk \ jdk1.8.0_74,导致安装程序用JRE覆盖JDK。这导致(除其他外)我的JDK bin中缺少javac.exe,以及OP在我所有的maven构建中报告的相同错误。


3
投票

我有一个解决方案。

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

所以我做了以下解决问题。展开“已安装的JRE”选项卡,您将找到“执行环境”选项卡。

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

enter image description here


2
投票

我只是浪费了3个小时来解决这个问题,直到我成功完成它。发出mvn编译命令时,Eclipse终端中出现此错误:

此环境中未提供编译器。也许您运行的是JRE而不是JDK?

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

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

无法找到这个修复...所以...

因此,安装Java SE Development Kit 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并享受! (至少那是我的所作所为)

希望这可以避免一些有点麻烦的流浪者。


2
投票

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

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

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


125
投票

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

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


1
投票

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


1
投票

我做了以下更改,它对我有用。希望它帮助某人.enter image description here


1
投票

试试这个。

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

1
投票

1
投票

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

如果您正在使用Ubuntu服务器,那么您可以尝试再次安装Java,为此您可以使用此答案How to install the JDK on Ubuntu Linux


1
投票

问题陈述=此环境中未提供编译器。也许您运行的是JRE而不是JDK?的IntelliJ

请设置如下的环境变量来解决问题

变量名称:JAVA_HOME

变量值:C:\ Program Files \ Java \ jdk1.8.0_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

0
投票

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


0
投票

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

我们只需要使用部署程序集来配置Java EE Project的打包war文件的路径,然后重新运行maven-install。

使用部署程序集的步骤:

  1. 右键单击Java EE项目 - >单击Properties - >单击Deployment Assembly
  2. 单击添加按钮 - >单击文件系统中的存档 - >单击下一步 - >单击添加 - >转到.m2 \ respository目录并搜索生成的war文件 - >选择war文件 - >单击打开按钮 - >单击应用 - >确定
  3. 右键单击项目 - >在Run As下单击Maven Install

这将成功构建您的项目,而不会出现任何编译器错误。

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


0
投票

你错过了任何maven构建吗?

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

希望这会有所帮助。


0
投票

我去了Preferences - > Java - > Installed JREs我没有在这里看到JDK。我这里只看到了JRE。所以我添加了JDK。

在这里我们必须强制删除JRE而不是仅仅取消选中。


114
投票

对我来说,在我对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编译器(如上所述)就可以了。


0
投票

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

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

enter image description here

  • 单击完成
  • 建立和运行

95
投票
  1. JAVA_HOME环境变量设置为JDK根文件夹 - 如果运行命令行或maven(mvn)则需要。 (搜索谷歌JAVA_HOME了解更多信息)
  2. 在Java Compiler部分的项目属性中,选择所需的JDK - 如果直接从eclipse运行

35
投票

当我试图在eclipse中进行maven构建时,我遇到了这个错误。

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


34
投票

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

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

Select the right JDK for your Runtime

Select default JRE

我复制了答案以防万一由于某种原因被删除,但源是here


27
投票

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

可能是jre已经添加了enter image description here

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

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

然后点击完成。

你会看到像thisenter image description here这样的窗口

选择JDK - > Apply - > Ok

你完成了。


13
投票

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

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

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

  1. 打开Java Build Path的项目特定库:右键单击“Project> Build Path> Configure Build Path ...”,然后选择“Libraries”选项卡。
  2. 选择“JRE System Library”条目并点击“Remove”。
  3. 点击“添加库......”。
  4. 弹出一个向导。选择“JRE系统库”并点击“下一步>”。
  5. 现在选择正确的JDK(在我的情况下是“Workspace default JRE”,我使用JDK配置)。
  6. 点击“完成”关闭向导。
  7. 单击“确定”关闭“属性”对话框。

9
投票

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

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

这对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.