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

当前回答

我有办法了。

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

所以我做了下面的事情来解决这个问题。 展开Installed JREs选项卡,您将发现一个Execution environments选项卡。

单击您最喜欢的执行环境。我用的是JAVASE-1.8。这里显示了两个选项。JDK和JRE。选择JDK,问题就解决了。

其他回答

有几个选项需要指定。

步骤: 就在项目资源管理器的项目中 去运行->运行配置->单击Maven构建->单击您的构建配置/或创建一个新的配置。 您将看到窗口如下所示的快照,单击JRE选项卡。

您可以看到有3个选项:1)工作空间默认JRE 2)执行环境3)可选JRE 1)工作空间默认JRE从顶部的“窗口”菜单设置->首选项-> Java ->已安装的JRE -在这里您可以添加您的jdk 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)备用JRE可用于从您的目录中选择jdk

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

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

如果你是这样的话,试试下面的方法:

打开Java Build Path的特定项目库:右键单击“Project > Build Path > Configure Build Path…”并选择“libraries”选项卡。 选择“JRE System Library”条目并点击“Remove”。 点击“添加库…”。 弹出一个向导。选择“JRE System Library”,然后按“Next >”。 现在选择正确的JDK(在我的例子中是“Workspace default JRE”,我选择了JDK 使用JDK配置)。 点击“完成”关闭向导。 点击“OK”关闭“Properties”对话框。

对我来说,在我对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编译器(如上所述)实现了这一目的。

当我创建一个新的EC2 ubuntu 16.04实例时,我得到了同样的错误,上面已经安装了Java,而运行mvn清洁包时,我遇到了这个问题,下面的解决方案对我有效。

如果你在Ubuntu服务器上工作,那么你可以尝试重新安装Java,为此你可以使用这个回答如何在Ubuntu Linux上安装JDK

进入“windows”->首选项-> Java ->已安装的jre

可能jre已经添加

单击“添加->标准虚拟机->下一步->目录”

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

然后点击完成。

你会看到这样的窗户

select JDK -> Apply -> Ok

你完成了。