Eclipse/Maven 错误:“此环境中未提供编译器”

Posted

技术标签:

【中文标题】Eclipse/Maven 错误:“此环境中未提供编译器”【英文标题】:Eclipse/Maven error: "No compiler is provided in this environment" 【发布时间】:2014-02-01 15:47:55 【问题描述】:

我是 Java 企业开发领域的新手。我组织的 Java 大师正在无限期休假,我被分配了维护他开发的一些 Java 应用程序的任务。在他离开之前,他在我的电脑上用 Maven 设置了 Eclipse [Kepler SR1],它似乎工作正常。

现在我已准备好部署我的第一个修改并需要运行 Maven install,但我无法让它工作 - 我在控制台上得到以下输出:

[错误] 无法在项目 mrpapp 上执行目标 org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile):编译失败 [错误] 此环境中未提供编译器。也许您在 JRE 而不是 JDK 上运行?

但我肯定 am 运行的是 JDK 而不是 JRE。我仔细检查了我的$JAVA_HOME (C:\Program Files (x86)\Java\jdk1.7.0_60),它确实在其bin 目录中有一个javac.exe

我附上我的pom.xml 文件的副本供您查看。我确定那里有什么东西导致了这个问题,但我不确定它可能是什么。我正在使用装有 Windows 7 64 位的笔记本电脑,如果您需要任何其他平台/环境信息,我也可以提供。

任何帮助将不胜感激。

【问题讨论】:

当您单击Window->Preferences->Java->Compiler 时,在Eclipse 中显示什么?如果不是这样,您还可以检查 eclipse.ini 文件以确保它没有指向 java jre 安装。 假设是 Eclipse 构建失败,您是否尝试过直接从命令行运行 Maven 命令(例如mvn install)?这两个问题之一也可能有所帮助:***.com/questions/19655184/… 和 ***.com/questions/15220392/… 打开命令窗口并输入javac -v 是否有效? 发现哪个 java 正在实际运行你的构建比它应该做的更棘手。尝试运行mvn help:system 并验证环境设置和系统属性是否符合您的预期。 @andersschuller 有一个非常好的观点——这是从命令行失败还是从 Eclipse 失败? 【参考方案1】:

转到窗口 → 首选项 → Java → 已安装的 JRE。

并查看是否有指向您的JDK路径的条目,如果没有,请单击编辑按钮并输入您配置JAVA_HOME环境的路径。

【讨论】:

谢谢你们!我转到 Window->Preferences->Java->InstalledJREs 并看到在我的默认值下方列出了不同的路径。我删除了那个,当我尝试 Maven 安装时,它运行没有错误。问题解决了! 为我工作。甚至给出了 jre8 位置(程序文件(x86))。我已将其更改为 jre7..工作。 它对我有用,但它真的很奇怪..!有人找到另一个可能的解决方法吗? @Dhn 你说这很奇怪是什么意思?如果您谈论的是错误本身,那一点也不奇怪。 Maven 的目标之一是编译 java 代码,因此它需要 JDK 而不是 JRE。 这很奇怪,因为 eclipse 想要一个 jdk 作为 jre.. 而且我还有很多其他错误,因为我已经用 intellij 导入了同一个项目,它立即向我显示了一个错误,比如 "invalid jre" 。此外,许多其他 conf 和 libs 都无法识别为错误的 jre..【参考方案2】:

Screen_shot 将“tools.jar”添加到已安装的 JRE。

    Eclipse -> window -> preference. 选择installed JREs -> Edit 添加外部罐子 从java/JDKx.x/lib 文件夹中选择tools.jar。 点击完成

【讨论】:

这就是解决方案。添加 tools.jar 为我解决了这个问题。 我在 jdk-10.0.1 中找不到 tools.jar。【参考方案3】:

进入 Window > Preferences > Java > Installed JREs > 并检查您安装的 JRE。您应该在那里有一个带有 JDK 的条目。

https://cduu.wordpress.com/2013/03/08/maven-eclipse-compiler-error-no-compiler-is-provided-in-this-environment/

【讨论】:

【参考方案4】:

我尝试了所有的东西;对我有用的是:

    右键单击 Eclipse 项目并导航到属性。 单击 Java 构建路径并转到“库”选项卡。 检查那里添加了哪个版本的 Java;是 JRE 还是 JDK? 如果您正在使用 Maven 项目并想要构建解决方案。 选择已添加的 JRE,然后单击删除。 单击添加外部类文件夹并通过选择添加 JDK 安装 来自系统。 点击应用和确定。 重启 Eclipse。 构建成功。

【讨论】:

对!它对我有用,在我使用 JDK 在首选项中配置 Eclipse 并重新构建项目后,这个问题仍然存在。上面的解决方案奏效了。【参考方案5】:

在 pom.xml 中添加此配置

<project ...>
    ...
    <build>
        ...
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <fork>true</fork>
                    <executable>C:\Program Files\Java\jdk1.7.0_79\bin\javac</executable>
                </configuration>
            </plugin>
        </plugins>
    </build>
    ...
</project>

【讨论】:

【参考方案6】:

这对我有用。 1. 点击窗口-> 首选项-> 已安装的 JRE。 2. 如下图所示,检查您引用的是否为 JDK。

如果没有,请单击添加-> 标准 VM-> 通过选择目录来提供 JDK 路径,然后单击完成,如图所示

    最后一步,点击 Installed JREs -> Execution Environments -> 选择您的 JDE,如下图所示

    Maven -> 清洁

【讨论】:

【参考方案7】:

我在使用 Jdk1.8_92 时也遇到了类似的错误。 对我来说,我发现我的 jdk 文件夹中缺少 tools.jar。 由于我在控制台中运行,我无法尝试其他人建议的eclipse选项..

我安装了 jdk-8u92-windows-x64。 在我尝试了所有选项后,我发现 jdk1.8.0_92/lib 文件夹中缺少 tools.jar。 我从旧版本的 java 中复制了 tools.jar。 然后它能够​​编译。

【讨论】:

【参考方案8】:

当我运行 mvn compile 时,我在控制台中遇到以下错误:

[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is platform dependent!
[INFO] Compiling 1087 source files to C:\Code\DevVNextComplete\Development_vNext\Source\JARS\target\classes
[INFO] -------------------------------------------------------------
[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

[分辨率]

我已经在我的环境变量中添加了 JAVA_HOME 变量,然后它就起作用了。

【讨论】:

【参考方案9】:

关注: Windows --> 首选项 --> Java ---> 已安装 JRE

点击“搜索..”

导航到C盘--->程序文件

Eclipse 将找到所有 jre 和 jdk --> 选择 jdk 之一并选择 Apply

【讨论】:

【参考方案10】:

请检查您的 pom.xml 元素中是否有以下条目,尤其是 jdk.version,因为切换到已安装的 jre 并没有解决类似的错误。

<properties>
    <jdk.version>1.7</jdk.version>
    <spring.version>4.1.1.RELEASE</spring.version>
    <jstl.version>1.2</jstl.version>
    <junit.version>4.11</junit.version>
</properties>

【讨论】:

【参考方案11】:

如果有人在 Ubuntu 中运行 Eclipse 并遇到此问题,我已按照以下步骤找到了答案:

    Eclipse->窗口->首选项。 选择安装的JREs->添加 选择标准虚拟机。 JRE 主页:按 [目录..] 按钮。 选择您的 java(我的问题是我的 eclipse 使用 java8 运行,而我的 VM 使用 java7),在我的情况下 java8 安装在 usr/local/jvm/java-8-oracle 中。 按完。 然后按已安装的 JRES 箭头,这样您就可以看到其他选项。 转到执行环境。 在左侧和右侧(兼容的 JRE)选择 JavaSE-1.6,您必须选择刚刚安装的 Java(在我的例子中是 java-8-oracle)。您必须使用 JavaSE1.8 执行此步骤。 单击确定并重新启动 Eclipse。

【讨论】:

【参考方案12】:

在安装了 JDK 8 和 JRE 8 的 Windows 10 上,尝试在新安装的 Eclipse Neon(用于 JEE 开发人员)安装中在 Eclipse 中执行 Maven 构建时遇到了同样的错误。

我曾尝试将 tools.jar 指定为外部库,并将 jdk 设置为 eclipse 中的 -vm。这些都不起作用。

选择 JDK 作为上面提到的默认执行环境就可以了..

    Eclipse->window->preference->java->Installed JREs->Execution Environments. 选择 JavaSE-1.8 在“兼容的 JRE”中检查 JDK1.8。

第 3 步中兼容 JRE 列表框上方的文本表示“可以通过选中它来指定默认 JRE”

注意:我也有在 pom 中明确列出 1.8 的 maven 编译器插件

    <plugin>  
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>

【讨论】:

【参考方案13】:

Installed JRE 在我的情况下,我通过删除重复的名称解决了这个问题,我只保留了一个名称:jdk.1.8.0_101

【讨论】:

【参考方案14】:

在我的例子中,我创建了一个运行配置,每当我尝试运行它时,都会显示错误。在一些网站上搜索后,我编辑了运行配置并在 JRE 选项卡下,选择运行时 JRE 作为“工作区默认 JRE”,我已经将其配置为指向我的本地 Java JDK 安装(例如 C:\Program Files (x86) \Java\jdk1.8.0_51)。这解决了我的问题。也许它可以帮助那里的人。

【讨论】:

【参考方案15】:

遇到了同样的问题,将 java 指向 Eclipse 中的 bin 文件夹,使用: windows > 首选项 > java > 已安装的 JRE > 删除任何现有的 JRE 并将其指向您的 java bin 文件夹(主要位于 C:\Program Files\Java\jdk1.8.x_xx 下)。

然后运行 ​​maven install 它应该可以工作。

【讨论】:

【参考方案16】:

要检查您的 Maven 使用什么,请打开命令行并输入:

mvn –version

验证 JAVA_HOME 是指 JDK home 而不是 JRE

在 Windows 上:

转到系统属性 -> 高级系统设置 -> 高级 -> 环境变量,然后在系统变量部分选择 JAVA_HOME 变量并单击编辑 填写以下表格 变量名:JAVA_HOME 变量值:

在 Unix 上:

export JAVA_HOME=<ABSOLUTE_PATH_TO_JDK>

见this link

【讨论】:

【参考方案17】:
    从系统中卸载旧的 Java(JDK/JRE)(保留一个(最新的)java 版本),如果环境变量 PATH/CLASSPATH 中有任何旧的 java jre/jdk 条目,也删除 Eclipse->Window->Preferences->Installed JREs->Add/Edit JDK from the latest installation Eclipse->Window->Preferences->Installed JREs->Execution Environment->左边选择想要的java版本,点击右边的复选框

    如果您使用 maven,请在 pom.xml 中包含以下标签(根据需要更新版本)内的 plugins 标签。

    <plugin>  
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    
    在eclipse项目Maven上右键->更新项目

【讨论】:

【参考方案18】:

对我来说(在 Windows 10 上),当我运行 mvn install 时,我在 Windows 命令提示符处收到错误“此环境中未提供编译器”。修复更改了 JAVA_HOME 环境变量以指向我的 jdk (C:\Program Files\Java\jdk1.8.0_101);以前它指向的是 jre。

为了让 Eclipse 使用新的 jdk,我在我的 eclipse 发行版中编辑了 eclipse.ini 并将 -vm 的行更改为 C:\Program Files\Java\jdk1.8.0_101\bin

【讨论】:

【参考方案19】:

检查 pom.xml 中的 java 版本和 Eclipse->Window->Preferences->Installed JREs 中的 jre 版本。在我的情况下 pom.xml 有不同的版本(它有 1.8 而 eclipse 使用 1.7)。将 pom.xml 中的版本修复为 1.7 有效。

【讨论】:

【参考方案20】:

如果您在命令窗口中在 Eclipse 之外工作 通过在命令窗口中输入以下命令,确保您拥有正确的 JAVA_HOME 并且该目录包含编译器:

dir %JAVA_HOME%\bin\javac.*

【讨论】:

【参考方案21】:

1.转到Windows-->Preferences-->Java-->Installed JREs-->Execution Environments

2.在“执行环境”框中选择您当前使用的java版本。 因此,在“兼容的 JRE”框中,您可以看到“jre1.8.0_102[完美匹配]”(如果您的 java 版本是 1.8)。然后尝试使用 maven 构建。

【讨论】:

【参考方案22】:

Maven 需要 JDK 才能编译。在 Eclipse 中,您需要将 JRE 更改/替换为 JAVA_HOME 指向的 JDK 路径。导航到窗口 > 首选项 > Java > 已安装的 JRE。

确保你的 pom.xml 中的 maven-compiler-plugin 在你的 JAVA_HOME 中有 java 版本的源和目标

http://learn-automation.com/maven-no-compiler-is-provided-in-this-environment-selenium/

【讨论】:

【参考方案23】:

通过在命令提示符中键入 echo %JAVA_HOME% 确保您已设置 %JAVA_HOME%。如果您没有该设置,那么您需要将您的 Java 路径添加到 Window 的环境变量中。

【讨论】:

【参考方案24】:

我通过在环境变量中提供 JAVA_HOME 并重新启动 intellij 解决了这个问题

【讨论】:

【参考方案25】:

您可以关注下面给出的任何一个。

    项目--属性--java构建路径--jre系统库--编辑--添加库路径为JDK 窗口首选项--java--安装JRE--JRE系统库--添加库并提供JDK文件夹路径 如果将 JDK 配置为指向 jre 而不是默认编译器,则必须以某种方式指示 eclipse 使用 JDK 作为构建/编译源

【讨论】:

【参考方案26】:

如果上述方法仍然没有帮助您面临同样的问题,则意味着您的自定义运行/调试配置中可能存在错误配置。

就我而言,我使用的是自定义 maven 运行配置。 那里 JRE 早先指出。一旦我将其更改为 JRK,它就会按预期工作。

【讨论】:

【参考方案27】:

我在使用 Eclipse Neon 时遇到问题,即使我在 Preferences->Java->Installed JREs 下添加了正确的位置,工作区默认值实际上也没有改变。这是在我为处理代码分支而创建的新工作区中;它最初设置为 JRE 位置而不是 JDK。然而,即使在更改了首选项之后,我也可以使用命令行构建,但在 Eclipse 中构建会产生无编译器错误。请看

Maven Package Compilation Error

对于我必须手动编辑哪些 Eclipse 配置文件以使 Eclipse 识别正确的工作区默认值的答案。我仍然不知道为什么首选项设置没有传递到新工作区的配置中。

【讨论】:

以上是关于Eclipse/Maven 错误:“此环境中未提供编译器”的主要内容,如果未能解决你的问题,请参考以下文章

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

Android Studio:此环境中未提供编译器。也许您在 JRE 而不是 JDK 上运行? [复制]

此环境中不提供编译器。执行 mvn clean package 时

此环境中不提供编译器。也许您在 JRE 而不是 JDK 上运行? - 但是选择了jdk

eclipse maven工程错误总汇

Eclipse Maven:pom.xml 中的未知错误