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 时