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

时间:2013-10-29 10:11:50

标签: java eclipse maven java-7 m2eclipse

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

33 个答案:

答案 0 :(得分:846)

  1. 在Eclipse IDE上,进入 Window > 偏好设置 > Java > 已安装的JRE >并检查 已安装的JRE 。你应该有一个JDK条目。
  2. 选择执行环境,如下所示。点击 确定
  3. 然后在项目中 右键单击 - > Maven - > 更新项目
  4. 此外,您可能需要更改Maven JRE(请参阅@ jlars62答案),如下所示。 Goto Run - >运行配置,选择我正在运行的Maven Build(从左侧面板)。然后,我单击了JRE选项卡并选择了Workspace默认JRE

    选项

    enter image description here

答案 1 :(得分:122)

对我而言,这正是日食的主人所抱怨的

enter image description here

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

答案 2 :(得分:112)

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

答案 3 :(得分:91)

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

答案 4 :(得分:34)

我试图在eclipse中进行maven构建时遇到此错误。

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

选项

答案 5 :(得分:34)

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

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

https://www.gnu.org/software/make/manual/html_node/Environment.html

Select the right JDK for your Runtime

我复制了答案,以防因某种原因被删除,但来源是Select default JRE

答案 6 :(得分:27)

  

转到Windows - &gt;偏好 - &gt; Java - &gt;已安装的JRE

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

  

点击添加 - &gt;标准VM - &gt;下一步 - &gt;目录

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

  

然后点击完成。

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

  

选择JDK - &gt;申请 - &gt;确定

你已经完成了。

答案 7 :(得分:12)

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

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

如果情况确实如此,请尝试以下方法:

  1. 打开Java Build Path的项目特定库:右键单击&#34; Project&gt;构建路径&gt;配置构建路径...&#34;并选择&#34;图书馆&#34;标签。
  2. 选择&#34; JRE系统库&#34;输入并点击&#34;删除&#34;。
  3. 点击&#34;添加图书馆......&#34;。
  4. 弹出一个向导。选择&#34; JRE系统库&#34;并点击&#34;下一步&gt;&#34;。
  5. 现在选择正确的JDK(在我的情况下&#34;工作区默认JRE&#34;,我 使用JDK配置。)
  6. 点击&#34;关闭向导&#34;。
  7. 关闭&#34;属性&#34;通过点击&#34; OK&#34;。
  8. 进行对话

答案 8 :(得分:9)

如果jaipster的答案不起作用的另一种选择是去:
窗口&gt;偏好&gt; Java&gt;已安装的JRE

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

这对我有用。

答案 9 :(得分:9)

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

env var

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

答案 10 :(得分:7)

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

答案 11 :(得分:7)

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

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

enter image description here

我的理解如下:

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

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

答案 12 :(得分:6)

有几个选项需要指定。

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

您看到有3个选项1)工作区默认JRE 2)执行环境3)备用JRE enter image description here 1)工作区默认JRE从顶部的“窗口”菜单设置 - &gt;偏好 - &gt; Java - &gt;已安装的JRE - 您可以添加您的jdk enter image description here 2)执行环境jdk可以在@ksnortum

中提到的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>

3)Alternate JRE可用于从目录中选择jdk

答案 13 :(得分:4)

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

  1. C:\ ProgramData \甲骨文\爪哇\ javapath
  2. C:\ ENV \ jdk1.8.0_151 \ BIN
  3. 所以我删除了1.可能交换它们也会修复它。

答案 14 :(得分:3)

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

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

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

请注意,一个是 jdk 1.8.0_74,另一个是 jre 1.8.0_74

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

答案 15 :(得分:3)

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

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

enter image description here

enter image description here

答案 16 :(得分:3)

我得到了一个解决方案。

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

所以我做了以下解决问题。 展开已安装的JRE 标签,您会找到 执行环境 标签。

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

enter image description here

答案 17 :(得分:2)

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

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

删除&#34; C:\ ProgramData \ Oracle \ Java \ javapath&#34;中的所有文件后文件夹我的错误得到了解决。

答案 18 :(得分:2)

尽管问题是关于Eclipse安装程序的错误,但是认为用IntelliJ和Windows 10安装程序修复此错误的答案可能也有帮助。

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

2 。如下所示将JDK的{​​{1}}设置为Importer

enter image description here

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

答案 19 :(得分: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并享受! (至少那是我的所作所为)

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

答案 20 :(得分:1)

问题语句 =在此环境中未提供编译器。也许您是在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

答案 21 :(得分:1)

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

答案 22 :(得分:1)

当我创建一个新的EC2 ubuntu 16.04实例并安装了Java并运行mvn clean package时,遇到了相同的错误,下面的解决方案对我有用。

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

答案 23 :(得分:1)

答案 24 :(得分:1)

在Windows 7-64位中,存在一个权限问题,该问题阻止安装程序将文件C:\ Program Files \ Java \ jdk1.6.xx \ lib \ tools.jar解压缩到本地。这个jar文件是3.x版本的maven-compiler-plugin而不是通常的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查看jar列表,​​包括tools.jar,或者您可以将其添加为Add External JAR。 然后通过以下步骤配置Maven运行:

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

答案 25 :(得分: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>

答案 26 :(得分:1)

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

答案 27 :(得分:0)

右键单击您的项目并以 maven install 运行,然后再次运行您的应用程序。 如果这不起作用,请直接转到项目文件夹,然后启动命令行并运行“mvn install”enter image description here

答案 28 :(得分:0)

我尝试大多数答案都没有成功。 对我有用的是(遵循https://stackoverflow.com/a/21279068/2408893之后):

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

enter image description here

  • 单击完成
  • 构建并运行

答案 29 :(得分:0)

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

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

答案 30 :(得分:0)

你是否遗漏了任何maven构建。

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

希望这会有所帮助。

答案 31 :(得分:0)

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

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

使用部署程序集的步骤:

  1. 右键单击Jave EE项目 - &gt;单击“属性”      - &GT;单击部署程序集

  2. 点击添加按钮 - &gt;单击文件中的存档     系统 - &gt;点击下一步 - &gt;点击添加 - &gt;去吧     .m2 \ respository目录并搜索生成的war文件 - &gt;     选择war文件 - &gt;点击打开按钮 - &gt;点击Apply - &gt;确定

  3. 右键点击该项目 - &gt;单击Maven Install下     运行方式

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

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

答案 32 :(得分:0)

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