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

时间:2014-01-13 18:54:03

标签: java eclipse maven

我是Java企业开发世界的新手。我的组织的Java专家已无限期休假,我被分配了维护他开发的一些Java应用程序的任务。在他离开之前,他在我的计算机上用Maven设置了Eclipse [Kepler SR1],它似乎工作正常。

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

  

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

但我肯定运行JDK而不是JRE。我仔细检查了我的$JAVA_HOMEC:\Program Files (x86)\Java\jdk1.7.0_60), javac.exe目录中有bin

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

非常感谢任何帮助。

25 个答案:

答案 0 :(得分:145)

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

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

答案 1 :(得分:19)

Screen_shot 添加' tools.jar'安装JRE。

  1. <p> - &gt; Eclipse - &gt; window
  2. 选择preference - &gt; installed JREs
  3. 添加外部罐子
  4. Edit文件夹中选择tools.jar
  5. 点击完成

答案 2 :(得分:15)

进入Window&gt;偏好&gt; Java&gt;已安装的JRE&gt;并检查已安装的JRE。你应该在那里有一个带JDK的条目。

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

答案 3 :(得分:10)

我尝试了所有的事情;对我有用的是:

  1. 右键单击Eclipse项目并导航到属性。
  2. 单击Java Build Path并转到Libraries选项卡。
  3. 检查那里添加的Java版本;是JRE还是JDK?
  4. 如果您正在使用Maven项目并希望构建解决方案。
  5. 选择添加了JRE的JRE,然后点击删除。
  6. 单击“添加外部类文件夹”并选择“添加JDK安装” 来自该系统。
  7. 单击“应用”,然后单击“确定”。
  8. 重启Eclipse。
  9. 构建成功。

答案 4 :(得分:4)

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

答案 5 :(得分:3)

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

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

答案 6 :(得分:2)

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

  1. Eclipse的&GT;窗口 - &GT;优选。
  2. 选择已安装的JRE-&gt;添加
  3. 选择standardVM。
  4. JRE主页:按[目录..]按钮。
  5. 选择你的java(我的问题是我的eclipse是用java8运行的,我的VM是用java7运行的),在我的例子中java8安装在usr / local / jvm / java-8-oracle中。
  6. 按完成。
  7. 然后按下已安装的JRES箭头,以便您可以看到其他选项。
  8. 转到执行环境。
  9. 在左侧和右侧选择JavaSE-1.6(兼容的JRE),您必须选择刚刚安装的Java(在我的例子中是java-8-oracle)。你必须使用JavaSE1.8执行此步骤。
  10. 单击“确定”并重新启动Eclipse。

答案 7 :(得分:2)

请检查你的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>

答案 8 :(得分:2)

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

我曾尝试将tools.jar指定为外部lib,并在eclipse中将jdk设置为-vm。这些都没有奏效。

如上所述选择JDK作为默认执行环境就可以了。

  1. Eclipse-&gt; window-&gt; preference-&gt; java-&gt;已安装的JRE-&gt;执行环境。
  2. 选择JavaSE-1.8
  3. 在“兼容的JRE”中检查JDK1.8。
  4. 步骤3中兼容的JRE列表框上方的文字说“可以通过检查来指定默认的JRE”

    注意:我还在maom编译器插件中明确列出了pom中的1.8

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

答案 9 :(得分:2)

关注: Windows - &gt; 偏好设置 - &gt; Java ---&gt; 已安装 JRE

SampleImage

点击“搜索 ..”

导航到C盘---&gt;程序文件

Sample Image 2

Eclipse将找到所有jre和jdk的 - &gt;选择 jdk 之一,然后选择应用

答案 10 :(得分:1)

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

答案 11 :(得分:1)

当我运行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变量,然后就可以了。

enter image description here

答案 12 :(得分:1)

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

答案 13 :(得分:1)

要检查Maven使用的内容,请打开命令行并输入:

mvn –version

验证JAVA_HOME是指JDK home而不是JRE

在Windows上:

转到系统属性 - &gt;高级系统设置 - &gt;高级 - &gt;环境变量,在System variables部分选择JAVA_HOME变量,然后单击Edit 填写表格如下 变量名称:JAVA_HOME 变量值:

在Unix上:

export JAVA_HOME=<ABSOLUTE_PATH_TO_JDK>

请参阅this link

答案 14 :(得分:1)

遇到了同样的问题,使用以下方法将日志指向eclipse中的bin文件夹: 窗户&gt;偏好&gt; java&gt;已安装的JRE&gt;删除任何现有的JRE并将其指向您的java bin文件夹(主要位于C:\ Program Files \ Java \ jdk1.8.x_xx下)。

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

答案 15 :(得分:0)

这对我有用。 1.单击窗口->首选项->已安装的JRE。 2.如下图所示,检查您引用的JDK是否适用于JDK。 enter image description here

如果没有,请单击Add-> Standard VM->通过选择目录提供JDK路径,然后单击完成,如图所示。 enter image description here

  1. 最后一步,单击已安装的JRE->执行环境->选择您的JDE,如下图所示 enter image description here

  2. Maven->清洁

答案 16 :(得分:0)

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

答案 17 :(得分:0)

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

答案 18 :(得分:0)

Maven需要JDK进行编译。在Eclipse中,您需要将JRE更改/替换为JAVA_HOME指向的JDK路径。导航到Window&gt;偏好&gt; Java&gt;已安装的JRE。

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

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

答案 19 :(得分:0)

1.转到Windows - &gt;首选项 - &gt; Java - &gt;已安装的JRE - &gt;执行环境

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

答案 20 :(得分:0)

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

dir %JAVA_HOME%\bin\javac.*

答案 21 :(得分:0)

检查pom.xml中的java版本和Eclipse中的jre版本 - &gt; Window-&gt; Preferences-&gt;已安装的JRE。在我的情况下,pom.xml有不同的版本(它有1.8而eclipse使用1.7)。将pom.xml中的版本修复为1.7。

答案 22 :(得分:0)

对于我(在Windows 10上),我收到错误&#34;在此环境中没有提供编译器&#34;在我运行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

答案 23 :(得分:0)

  1. 从系统中卸载旧Java(JDK / JRE)(保留一个(最新)java版本),如果环境变量中有任何旧的java jre / jdk条目,则删除PATH / CLASSPATH
  2. Eclipse-&gt; Window-&gt; Preferences-&gt;已安装的JRE-&gt;从最新安装添加/编辑JDK
  3. Eclipse-&gt; Window-&gt; Preferences-&gt;已安装的JRE-&gt;执行环境 - &gt;在左侧选择所需的java版本,然后单击右侧的复选框
  4. 如果您正在使用maven,请在plugins标记内的pom.xml中添加以下标记(根据需要更新版本)。

    <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>
    
  5. 右键点击eclipse项目Maven - &gt;更新项目

答案 24 :(得分:-1)

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

Maven Package Compilation Error

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