【问题标题】:No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?此环境中不提供编译器。也许您在 JRE 而不是 JDK 上运行?
【发布时间】:2013-11-08 10:17:26
【问题描述】:

我正在使用 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?

【问题讨论】:

  • 你是如何开始编译的?命令行? Eclipse 工具?
  • 从eclipse工具运行配置-->目标:全新安装
  • 嘿,出现这个错误是因为 Maven 正在尝试获取 JDK,但在 eclipse 中它指向 JRE。您可以更改 JDK 的路径,它会起作用。查看下面的帖子,这将对您有所帮助learn-automation.com/…
  • 我正在发布这个链接,以便将来有人可能会像我一样受益。 stackoverflow.com/a/33873838/4525120

标签: java eclipse maven java-7 m2eclipse


【解决方案1】:
  1. 在您的 Eclipse IDE 上,进入 Window > Preferences > Java > 已安装的 JRE > 并检查您的已安装的 JRE。您应该在那里有一个带有 JDK 的条目。
  2. 如下图所示选择执行环境。点击确定
  3. 然后在您的项目上右键单击 -> Maven -> 更新项目

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

【讨论】:

  • @jaipster 我尝试这样做,但在左侧面板中找不到 jdk,我只能看到 jre7。你知道为什么吗?
  • 可能是你的机器上没有安装 jdk7 或者没有在 eclipse 中配置。你能确认一下吗?
  • @Diode 我遇到了同样的问题。我转到“已安装的 JRE”并单击“添加...”从那里我浏览到 C:\Program Files\Java\jdk1.7.0_XX,然后我可以选择 jre 作为 jaipster 描述。
  • 对我来说,只需将 JDK 添加到“已安装的 JRE”列表(不是最佳命名...)并选中新 JDK 条目旁边的复选框使其成为默认 VM 就足够了.
  • 我单击了“已安装的 JRE”菜单中的“搜索”按钮。 Eclipse 搜索了一个我指向的驱动器,并找到了所有已安装的 JRE 和 JDK。
【解决方案2】:
  1. JAVA_HOME 环境变量设置为 JDK 根文件夹 - 如果您运行命令行或 maven (mvn),则需要。
    • (在 google 上搜索 JAVA_HOME 了解更多信息)
  2. 在 Java 编译器部分的项目属性中选择所需的 JDK - 如果您直接从 eclipse 运行

【讨论】:

  • 为什么需要步骤 1?
  • @DuncanJones,如果您运行命令行或 maven(此变量为 google),则首先是必需的,其次 - 如果您直接从 eclipse 运行,
  • 我会将该信息添加到您的答案中。否则,这表明两者在所有情况下都是必要的。
  • 注意JAVA_HOME确实不是以“bin”结尾,而是指向JDK的root
  • 发布插件需要这个,因为它不使用 eclipse 中的 jre 设置(带有外部 maven 安装)...
【解决方案3】:

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

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

【讨论】:

  • 我宁愿建议使用“添加”按钮添加 JRE,然后操作 JRE 条目成为 JDK 条目!添加 JDK 后,单击 JDK 条目旁边的复选框。这应该已经解决了本文中描述的问题。
  • 这很奇怪。因为正如对话框的标题所示,这应该放置 Installed JREs 而不是 jdk 文件夹。但它确实解决了我的问题。谢谢
  • 奇怪的是标题是 Installed JREs 但路径是 JDK 但无论如何它都可以工作谢谢
  • 在添加 JDK 后删除 JRE 是个好主意。有时 Eclipse 会不顾一切地继续使用 JRE——不知道为什么会这样。使 JDK 成为唯一可用的选项会有所帮助。 :)
【解决方案4】:

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

【讨论】:

  • 此解决方案应作为最后的手段实施,因为项目本身已修改为与您当前的开发机器耦合。
  • @ksnortum 谢谢!这是唯一让它对我有用的东西。
  • 我们这里的 linux 人呢?
  • 我怀疑它几乎相同,除了可执行文件是 /path/to/java/bin/javac。也许尝试“哪个 java”来找到你的 Java 路径。
  • 构建成功。谢谢
【解决方案5】:

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

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

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

【讨论】:

  • 这对我有用。如果 JDK 没有显示在 Alternate JRE 下拉列表中,那么您需要添加已安装的 JRE(导航到安装 JDK 的文件夹)并选择 JDK 文件夹。
  • 这是我的问题,感谢您的回答。
【解决方案6】:

我在尝试从 Eclipse 中构建 maven 时遇到此错误。

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

【讨论】:

  • 这似乎是除了上面选择的答案之外还需要检查的。
  • 我更喜欢这个解决方案,因为它不会让您更改其他项目的默认 java 版本。
【解决方案7】:

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

可能已经添加了 jre

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

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

然后点击完成。

你会看到这样的窗口

选择 JDK -> 应用 -> 确定

你已经完成了。

【讨论】:

  • 感谢分享 JDK 路径。当我从一开始只显示 JRE 时,似乎人们可以选择另一个选项来单击 JDK。我从您提供的路径中添加了 JDK。
【解决方案8】:

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

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

【讨论】:

  • 我想强调一下,我的 JAVA_HOME 路径已经指向 bin 文件夹,在尝试了 JRE 和 JDK 的两个子文件夹后,我发现您示例中的路径实际上不是 @ 987654329@文件夹,感觉有点反直觉。
【解决方案9】:

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

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

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

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

【讨论】:

  • 我已经尝试了@ishu提到的所有上述选项,但仍然得到 org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin: 3.1:compile (default-compile) on project hibernateTest1: Compilation failure, then I try your solution , but no change in error...请帮帮我。
  • 在你的 pom.xml 中添加 &lt;build&gt; &lt;sourceDirectory&gt;flockWebclient&lt;/sourceDirectory&gt; &lt;resources&gt; &lt;resource&gt; &lt;directory&gt;resources&lt;/directory&gt; &lt;excludes&gt; &lt;exclude&gt;**/*.java&lt;/exclude&gt; &lt;/excludes&gt; &lt;/resource&gt; &lt;/resources&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt; &lt;version&gt;3.5.1&lt;/version&gt; &lt;configuration&gt; &lt;source&gt;1.8&lt;/source&gt; &lt;target&gt;1.8&lt;/target&gt; &lt;/configuration&gt; &lt;/plugin&gt; &lt;/plugins&gt; &lt;/build&gt;
【解决方案10】:

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

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

这对我有用。

【讨论】:

  • 对我来说就是这样。有趣的是,有时我会收到默认 JRE 错误地指向 JDK 的错误。
  • 为我工作,我想做 maven clean install compile
【解决方案11】:

如果您从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"

【讨论】:

    【解决方案12】:

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

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

    我的理解是这样的:

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

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

    【讨论】:

    • 对于mvn命令运行的人来说,重要的是需要设置JAVA_HOME并指向JDK目录。谢谢你
    【解决方案13】:

    我的回答是关于 Windows 环境下的 Eclipse。

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

    【讨论】:

      【解决方案14】:

      有几个选项可以指定。

      步骤: 在项目资源管理器中的项目上 转到运行-> 运行配置-> 单击 Maven 构建-> 单击您的构建配置/或创建一个新配置。 您将看到下面给定快照的窗口,单击那里的 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

      【讨论】:

        【解决方案15】:

        问题说明 = 此环境中未提供编译器。也许您在 JRE 而不是 JDK 上运行?智能

        解决方案

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

        变量名: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

        【讨论】:

          【解决方案16】:

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

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

          2。如下图将JDKImporter设置为JAVA_HOME

          还应将JAVA_HOME 设置为环境变量中的JDK 路径 --> 系统变量,并将%JAVA_HOME%\bin 添加到路径系统变量中

          【讨论】:

            【解决方案17】:

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

            1. C:\ProgramData\Oracle\Java\javapath
            2. C:\env\jdk1.8.0_151\bin

            所以我删除了 1。可能交换它们也可以解决它。

            【讨论】:

              【解决方案18】:

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

              安装 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,导致安装程序用杰瑞。这导致(除其他外)我的 JDK bin 中缺少 javac.exe,以及 OP 在我的所有 maven 构建中报告的相同错误。

              【讨论】:

                【解决方案19】:

                我有一个解决办法。

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

                所以我做了以下来解决这个问题。 展开Installed JREs选项卡,您将找到一个执行环境选项卡。

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

                【讨论】:

                  【解决方案20】:

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

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

                  • 点击完成
                  • 构建并运行

                  【讨论】:

                    【解决方案21】:

                    我做了以下更改,它对我有用。希望它对某人有所帮助。

                    【讨论】:

                      【解决方案22】:

                      我只是在这个问题上浪费了 3 个小时,直到我设法让它工作。 发出 mvn compile 命令时,我在 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 并享受吧! (至少我是这样做的)

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

                      【讨论】:

                        【解决方案23】:

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

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

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

                        【讨论】:

                          【解决方案24】:

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

                          【讨论】:

                            【解决方案25】:

                            试试这个。

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

                            【讨论】:

                              【解决方案26】:

                              【讨论】:

                                【解决方案27】:

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

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

                                【讨论】:

                                  【解决方案28】:

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

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

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

                                  转到窗口 -> 首选项 -> Java -> 已安装的 JRE 选择您正在使用的 JDK (C:\Program Files\Java\jdk1.6.xx) 按 Edit 查看包含 tools.jar 的 jar 列表,或者您可以将其添加为 Add External JAR 然后通过这些步骤配置maven运行:

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

                                  【讨论】:

                                    【解决方案29】:

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

                                    【讨论】:

                                      【解决方案30】:

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

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

                                      使用部署程序集的步骤:

                                      1. 右键单击 Jave EE 项目 --> 单击属性 --> 点击部署组件

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

                                      3. 项目右键-->点击Maven Install下 运行方式

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

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

                                      【讨论】:

                                        猜你喜欢
                                        • 2019-10-23
                                        • 2016-04-29
                                        • 2018-06-12
                                        • 2021-04-30
                                        • 2018-02-25
                                        • 1970-01-01
                                        • 2017-07-15
                                        • 2018-11-12
                                        • 1970-01-01
                                        相关资源
                                        最近更新 更多